TaskCompletionSource<>
'un iç işleyişi hakkında bana net olmayan bir şey var. TaskCompletionSource ile TaskCreationOptions'ın amacı nedir?
Factory
kullanarak basit Task<>
oluşturarak
TaskCreationOptions.LongRunning
, belirtmedikçe bu görevi, bir iş parçacığı havuzunda kuyruğa bekliyoruz.
TaskCompletionSource
ait
Benim anlayış, bir görev sona erdiğinde ben tetikleme sorumlu olduğumu, ya da başarısız olur ve ben konuları yönetme konusunda tam kontrole sahip. Ancak TaskCompletionSource
ait ctor beni TaskCreationOptions
belirlemenizi sağlar, ve ben görevi kendi başına halledebileceğini olmamak Scheduler
bekliyordum çünkü bu, beni karıştırmayın.
TaskCompletionSource<>
kapsamında TaskCreationOptions
'un amacı nedir? TaskCompletionSource başka bir görevin çocuk olabildiğince
public Task<WebResponse> Download(string url)
{
TaskCompletionSource<WebResponse> tcs =
new TaskCompletionSource<WebResponse>(TaskCreationOptions.LongRunning);
var client = (HttpWebRequest)HttpWebRequest.Create(url);
var async = client.BeginGetResponse(o =>
{
try
{
WebResponse resp = client.EndGetResponse(o);
tcs.SetResult(resp);
}
catch (Exception ex)
{
tcs.SetException(ex);
}
}, null);
return tcs.Task;
}
, bu yüzden bazı kod sonucuna dayanarak bir şey, bir TCS veya Görev geçti ve bunu edilebileceğini mümkün tabii: Aşağıdaki kod aslında bir istisna atar Bu seçeneklerden birinin (bu görevi işleyen özel kodda). – Servy