TaskScheduler.GetScheduledTasks TaskScheduler.GetScheduledTasks TaskScheduler.GetScheduledTasks TaskScheduler.GetScheduledTasks Method

Definition

Nur für Debuggerunterstützung: Generiert eine Enumeration von Task-Instanzen, die sich gegenwärtig in der Warteschlange des Taskplaners befinden und auf ihre Ausführung warten.For debugger support only, generates an enumerable of Task instances currently queued to the scheduler waiting to be executed.

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 ();
abstract member GetScheduledTasks : unit -> seq<System.Threading.Tasks.Task>
Protected MustOverride Function GetScheduledTasks () As IEnumerable(Of Task)

Gibt zurück

Eine Aufzählung, in der von einem Debugger die gegenwärtig in der Warteschlange dieses Taskplaners enthaltenen Aufgaben durchsucht werden können.An enumerable that allows a debugger to traverse the tasks currently queued to this scheduler.

Ausnahmen

Dieser Planer kann derzeit keine Liste in der Warteschlange stehender Aufgaben generieren.This scheduler is unable to generate a list of queued tasks at this time.

Hinweise

Eine von TaskScheduler abgeleitete Klasse implementiert diese Methode, um die Integration mit Debuggern zu unterstützen.A class derived from TaskScheduler implements this method in order to support integration with debuggers. Diese Methode wird nur vom .NET Framework aufgerufen, wenn der Debugger Zugriff auf die Daten anfordert.This method will only be invoked by the .NET Framework when the debugger requests access to the data. Die zurückgegebene Aufzählung wird durch debugginghilfsprogramme durchlaufen, um auf die derzeit in der Warteschlange befindlichen Aufgaben zuzugreifen, sodass der Debugger eine Darstellung dieser Informationen auf der Benutzeroberfläche bereitstellen kann.The enumerable returned will be traversed by debugging utilities to access the tasks currently queued to this scheduler, enabling the debugger to provide a representation of this information in the user interface.

Beachten Sie Folgendes: Wenn diese Methode aufgerufen wird, werden alle anderen Threads im Prozess fixiert.It is important to note that, when this method is called, all other threads in the process will be frozen. Daher ist es wichtig, die Synchronisierung mit anderen Threads zu vermeiden, die zu Blockierungen führen können.Therefore, it's important to avoid synchronization with other threads that may lead to blocking. Wenn eine Synchronisierung erforderlich ist und Sie die Sperre in dieser Methode nicht abrufen können, sollten Sie eine Ausnahme auslösen, damit der Debugger nicht blockiert wird.If synchronization is necessary, and you are unable to acquire the lock in this method, then you should throw an exception so that the debugger does not block. Das folgende Beispiel zeigt einen möglichen Ansatz in C#:The following example shows one possible approach 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);  
    }}  

Außerdem dürfen diese Methode und die zurückgegebene Aufzähl Bare keinen global sichtbaren Zustand ändern.Additionally, this method and the enumerable returned must not modify any globally visible state.

Der zurückgegebene Aufzähl Bare darf nie NULL sein.The returned enumerable should never be null. Wenn zurzeit keine Tasks in der Warteschlange vorhanden sind, sollte stattdessen ein leeres Aufzähl bares Element zurückgegeben werden.If there are currently no queued tasks, an empty enumerable should be returned instead.

Entwickler, die benutzerdefinierte debuggger implementieren, sollten diese Methode nicht direkt aufrufen, sondern sollten stattdessen die GetScheduledTasksForDebugger interne Wrapper internal Task[] GetScheduledTasksForDebugger()Methode verwenden:.Developers who are implementing custom debuggers shouldn't call this method directly, but should use the internal wrapper method GetScheduledTasksForDebugger instead: internal Task[] GetScheduledTasksForDebugger(). Diese Wrapper Methode gibt ein Array von Aufgaben anstelle eines Aufzähl baren zurück.This wrapper method returns an array of tasks instead of an enumerable. Verwenden Sie die interne-Methode internal static TaskScheduler[] GetTaskSchedulersForDebugger(), um eine Liste der aktiven Planer abzurufen.To retrieve a list of active schedulers, use the internal method internal static TaskScheduler[] GetTaskSchedulersForDebugger(). Diese statische Methode gibt ein Array aller aktiven TaskScheduler Instanzen zurück.This static method returns an array of all active TaskScheduler instances. Sie können dann auf GetScheduledTasksForDebugger jeder Scheduler-Instanz verwenden, um die Liste der geplanten Aufgaben abzurufen.You can then use GetScheduledTasksForDebugger on each scheduler instance to retrieve its list of scheduled tasks.

Gilt für:

Siehe auch