Was ist der Zweck von TaskCreationOptions mit einer TaskCompletionSource?

Es ist mir etwas unklar über das Innenleben vonTaskCompletionSource<>.

Beim Erstellen eines einfachenTask<> Verwendung derFactoryIch gehe davon aus, dass diese Aufgabe in einem Thread-Pool in die Warteschlange gestellt wird, sofern ich nichts anderes angegeben habeTaskCreationOptions.LongRunning, wo es stattdessen in einem neuen Thread laufen wird.

Mein Verständnis vonTaskCompletionSource, ist, dass ich für das Auslösen verantwortlich bin, wenn eine Aufgabe endet oder fehlschlägt, und ich die volle Kontrolle darüber habe, wie Threads verwaltet werden. Der ctor vonTaskCompletionSource Ermöglicht mir die Angabe einesTaskCreationOptions, und das verwirrt mich, da ich das erwartet habeScheduler nicht in der Lage sein, die Aufgabe selbst zu behandeln.

Was ist der Zweck vonTaskCreationOptions im Rahmen von aTaskCompletionSource<>?

Hier ist ein Anwendungsbeispiel:

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;
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage