TaskScheduler.GetScheduledTasks Método

Definição

Apenas para o suporte do depurador, gera um enumerável de instâncias Task atualmente na fila do Agendador aguardando ser executado.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 ();
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)

Retornos

IEnumerable<Task>

Um enumerável que permite que um depurador percorra as tarefas atualmente na fila para este agendador.An enumerable that allows a debugger to traverse the tasks currently queued to this scheduler.

Atributos

Exceções

Este Agendador não é capaz de gerar uma lista de tarefas em fila no momento.This scheduler is unable to generate a list of queued tasks at this time.

Comentários

Uma classe derivada de TaskScheduler implementa esse método para dar suporte à integração com os depuradores.A class derived from TaskScheduler implements this method in order to support integration with debuggers. Esse método só será invocado pelo .NET Framework quando o depurador solicitar acesso aos dados.This method will only be invoked by the .NET Framework when the debugger requests access to the data. O Enumerable retornado será percorrido por utilitários de depuração para acessar as tarefas atualmente enfileiradas para esse Agendador, permitindo que o depurador forneça uma representação dessas informações na interface do usuário.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.

É importante observar que, quando esse método é chamado, todos os outros threads no processo serão congelados.It is important to note that, when this method is called, all other threads in the process will be frozen. Portanto, é importante evitar a sincronização com outros threads que podem levar ao bloqueio.Therefore, it's important to avoid synchronization with other threads that may lead to blocking. Se a sincronização for necessária e você não conseguir adquirir o bloqueio nesse método, você deverá lançar uma exceção para que o depurador não seja bloqueado.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. O exemplo a seguir mostra uma abordagem possível em 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);  
    }}  

Além disso, esse método e o Enumerable retornado não devem modificar nenhum estado globalmente visível.Additionally, this method and the enumerable returned must not modify any globally visible state.

O Enumerable retornado nunca deve ser nulo.The returned enumerable should never be null. Se não houver tarefas em fila no momento, um Enumerable vazio deverá ser retornado.If there are currently no queued tasks, an empty enumerable should be returned instead.

Os desenvolvedores que estão implementando depuradores personalizados não devem chamar esse método diretamente, mas devem usar o método wrapper interno, GetScheduledTasksForDebugger em vez disso: internal Task[] GetScheduledTasksForDebugger() .Developers who are implementing custom debuggers shouldn't call this method directly, but should use the internal wrapper method GetScheduledTasksForDebugger instead: internal Task[] GetScheduledTasksForDebugger(). Esse método wrapper retorna uma matriz de tarefas em vez de um Enumerable.This wrapper method returns an array of tasks instead of an enumerable. Para recuperar uma lista de agendadores ativos, use o método interno internal static TaskScheduler[] GetTaskSchedulersForDebugger() .To retrieve a list of active schedulers, use the internal method internal static TaskScheduler[] GetTaskSchedulersForDebugger(). Esse método estático retorna uma matriz de todas as TaskScheduler instâncias ativas.This static method returns an array of all active TaskScheduler instances. Você pode usar GetScheduledTasksForDebugger em cada instância do Agendador para recuperar sua lista de tarefas agendadas.You can then use GetScheduledTasksForDebugger on each scheduler instance to retrieve its list of scheduled tasks.

Aplica-se a

Confira também