TaskScheduler.GetScheduledTasks Methode

Definitie

Alleen voor foutopsporingsprogramma-ondersteuning genereert u een opsomming van Task exemplaren die momenteel in de wachtrij staan voor de planner die moet worden uitgevoerd.

protected:
 abstract System::Collections::Generic::IEnumerable<System::Threading::Tasks::Task ^> ^ GetScheduledTasks();
[System.Security.SecurityCritical]
protected abstract System.Collections.Generic.IEnumerable<System.Threading.Tasks.Task> GetScheduledTasks();
protected abstract System.Collections.Generic.IEnumerable<System.Threading.Tasks.Task> GetScheduledTasks();
[<System.Security.SecurityCritical>]
abstract member GetScheduledTasks : unit -> seq<System.Threading.Tasks.Task>
abstract member GetScheduledTasks : unit -> seq<System.Threading.Tasks.Task>
Protected MustOverride Function GetScheduledTasks () As IEnumerable(Of Task)

Retouren

Een opsomming die een foutopsporingsprogramma toestaat om de taken te doorlopen die momenteel in de wachtrij staan voor deze scheduler.

Kenmerken

Uitzonderingen

Deze scheduler kan momenteel geen lijst met taken in de wachtrij genereren.

Opmerkingen

Een klasse die is afgeleid van TaskScheduler deze methode implementeert om integratie met foutopsporingsprogramma's te ondersteunen. Deze methode wordt alleen aangeroepen door het .NET Framework wanneer het foutopsporingsprogramma toegang tot de gegevens aanvraagt. Het geretourneerde enumerable wordt doorkruist door hulpprogramma's voor foutopsporing om toegang te krijgen tot de taken die momenteel in de wachtrij staan voor deze scheduler, zodat het foutopsporingsprogramma een weergave van deze informatie in de gebruikersinterface kan bieden.

Het is belangrijk te weten dat, wanneer deze methode wordt aangeroepen, alle andere threads in het proces worden geblokkeerd. Daarom is het belangrijk om synchronisatie met andere threads te voorkomen die kunnen leiden tot blokkering. Als synchronisatie nodig is en u de vergrendeling in deze methode niet kunt verkrijgen, moet u een uitzondering genereren zodat het foutopsporingsprogramma niet wordt geblokkeerd. In het volgende voorbeeld ziet u één mogelijke benadering in C#:

protected override IEnumerable<Task> GetScheduledTasks()
{
    bool lockTaken = false;
    try
    {
        Monitor.TryEnter(_syncObj, ref lockTaken);
        if (lockTaken)
        {
            return _tasks.ToArray();
        }
        else throw new NotSupportedException();
    }
    finally
    {
    if (lockTaken) Monitor.Exit(_syncObj);
    }}

Bovendien mogen deze methode en de opsommingsbare geretourneerde status niet wijzigen.

De geretourneerde opsomming mag nooit null zijn. Als er momenteel geen taken in de wachtrij staan, moet in plaats daarvan een lege opsomming worden geretourneerd.

Ontwikkelaars die aangepaste foutopsporingsprogramma's implementeren, moeten deze methode niet rechtstreeks aanroepen, maar in plaats daarvan de interne wrappermethode GetScheduledTasksForDebugger gebruiken: internal Task[] GetScheduledTasksForDebugger(). Deze wrapper-methode retourneert een matrix met taken in plaats van een opsomming. Als u een lijst met actieve planners wilt ophalen, gebruikt u de interne methode internal static TaskScheduler[] GetTaskSchedulersForDebugger(). Deze statische methode retourneert een matrix van alle actieve TaskScheduler exemplaren. U kunt vervolgens op elk scheduler-exemplaar gebruiken GetScheduledTasksForDebugger om de lijst met geplande taken op te halen.

Van toepassing op

Zie ook