TaskScheduler.GetScheduledTasks Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Yalnızca hata ayıklayıcı desteği için, yürütülmeyi bekleyen zamanlayıcıya sıraya alınmış örneklerin Task bir numaralandırılabilirini oluşturur.
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)
Döndürülenler
Hata ayıklayıcının şu anda kuyruğa alınmış olan görevlerde bu zamanlayıcıya geçiş yapmasına olanak tanıyan bir numaralandırılabilir.
- Öznitelikler
Özel durumlar
Bu zamanlayıcı şu anda kuyruğa alınan görevlerin listesini oluşturamıyor.
Açıklamalar
öğesinden TaskScheduler türetilen bir sınıf, hata ayıklayıcılarla tümleştirmeyi desteklemek için bu yöntemi uygular. Bu yöntem yalnızca hata ayıklayıcı verilere erişim istediğinde .NET Framework tarafından çağrılır. Döndürülen numaralandırılabilir, şu anda bu zamanlayıcıda kuyruğa alınmış olan görevlere erişmek için yardımcı programlar hata ayıklanarak geçirilir ve hata ayıklayıcının kullanıcı arabiriminde bu bilgilerin bir gösterimini sağlaması sağlanır.
Bu yöntem çağrıldığında, işlemdeki diğer tüm iş parçacıklarının dondurulacağını unutmayın. Bu nedenle, engellemeye yol açabilecek diğer iş parçacıklarıyla eşitlemekten kaçınmak önemlidir. Eşitleme gerekliyse ve bu yöntemde kilidi alamıyorsanız, hata ayıklayıcının engellememesi için bir özel durum oluşturmalısınız. Aşağıdaki örnekte C# dilinde olası bir yaklaşım gösterilmektedir:
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);
}}
Ayrıca, bu yöntem ve döndürülen numaralandırılabilir hiçbir genel olarak görünür durumda değişiklik yapmamalıdır.
Döndürülen numaralandırılabilir hiçbir zaman null olmamalıdır. Şu anda kuyruğa alınmış görev yoksa, bunun yerine boş bir numaralandırılabilir döndürülmelidir.
Özel hata ayıklayıcıları uygulayan geliştiriciler bu yöntemi doğrudan çağırmamalı, ancak bunun yerine iç sarmalayıcı yöntemini GetScheduledTasksForDebugger kullanmalıdır: internal Task[] GetScheduledTasksForDebugger(). Bu sarmalayıcı yöntemi, numaralandırılabilir yerine bir görev dizisi döndürür. Etkin zamanlayıcıların listesini almak için iç yöntemini internal static TaskScheduler[] GetTaskSchedulersForDebugger()kullanın. Bu statik yöntem tüm etkin TaskScheduler örneklerin bir dizisini döndürür. Ardından, zamanlanmış görevlerin listesini almak için her zamanlayıcı örneğinde kullanabilirsiniz GetScheduledTasksForDebugger .