TaskScheduler.GetScheduledTasks Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Endast för felsökningsstöd genererar en uppräkning av Task instanser som för närvarande är i kö till schemaläggaren som väntar på att köras.
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();
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)
Returer
En uppräkningsbar som gör det möjligt för en felsökare att gå igenom de uppgifter som för närvarande är i kö till den här schemaläggaren.
- Attribut
Undantag
Den här schemaläggaren kan inte generera en lista över köade aktiviteter just nu.
Kommentarer
En klass som härleds från TaskScheduler implementerar den här metoden för att stödja integrering med felsökningsprogram. Den här metoden anropas endast av .NET Framework när felsökaren begär åtkomst till data. Den uppräkningsbara som returneras kommer att bläddras genom felsökningsverktyg för att komma åt de uppgifter som för närvarande är i kö till den här schemaläggaren, vilket gör det möjligt för felsökaren att tillhandahålla en representation av den här informationen i användargränssnittet.
Det är viktigt att observera att när den här metoden anropas kommer alla andra trådar i processen att frysas. Därför är det viktigt att undvika synkronisering med andra trådar som kan leda till blockering. Om synkronisering är nödvändig och du inte kan hämta låset i den här metoden bör du utlösa ett undantag så att felsökaren inte blockeras. I följande exempel visas en möjlig metod i 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);
}}
Dessutom får den här metoden och den uppräkningsbara som returneras inte ändra något globalt synligt tillstånd.
Den returnerade uppräkningsbar får aldrig vara null. Om det för närvarande inte finns några köade uppgifter bör en tom uppräkning returneras i stället.
Utvecklare som implementerar anpassade felsökningsprogram bör inte anropa den här metoden direkt, utan bör använda den interna omslutningsmetoden GetScheduledTasksForDebugger i stället: internal Task[] GetScheduledTasksForDebugger(). Den här omslutningsmetoden returnerar en matris med aktiviteter i stället för en uppräkningsbar. Om du vill hämta en lista över aktiva schemaläggare använder du den interna metoden internal static TaskScheduler[] GetTaskSchedulersForDebugger(). Den här statiska metoden returnerar en matris med alla aktiva TaskScheduler instanser. Du kan sedan använda GetScheduledTasksForDebugger på varje scheduler-instans för att hämta listan över schemalagda aktiviteter.