AFAIK, bildiği tek şey, bir noktada, maruz kaldığı özellik yoluyla tamamlanması için onun SetResult
veya SetException
yönteminin çağrılmasıdır .Task<T>
Task
Başka bir deyişle, a Task<TResult>
ve tamamlanmasının üreticisi olarak hareket eder .
Burada örneği gördüm :
Bir Func'u eşzamansız olarak yürütmek ve bu işlemi temsil edecek bir Göreve sahip olmak için bir yola ihtiyacım varsa.
public static Task<T> RunAsync<T>(Func<T> function)
{
if (function == null) throw new ArgumentNullException(“function”);
var tcs = new TaskCompletionSource<T>();
ThreadPool.QueueUserWorkItem(_ =>
{
try
{
T result = function();
tcs.SetResult(result);
}
catch(Exception exc) { tcs.SetException(exc); }
});
return tcs.Task;
}
Ben olmasaydı hangi * kullanılabilir Task.Factory.StartNew
- Ama ben do var Task.Factory.StartNew
.
Soru:
Birisi örnekle ilgili bir senaryoyu lütfen açıklayabilir doğrudan karşı TaskCompletionSource
bir karşı değil, varsayımsal bende olmayan hangi durum Task.Factory.StartNew
?