Jaki jest cel TaskCreationOptions z TaskCompletionSource?

Jest coś dla mnie niejasnego na temat wewnętrznego działaniaTaskCompletionSource<>.

Podczas tworzenia prostegoTask<> używającFactory, Oczekuję, że to zadanie zostanie umieszczone w puli wątków, chyba że podamTaskCreationOptions.LongRunning, gdzie zamiast tego będzie działał w nowym wątku.

Moje zrozumienieTaskCompletionSource, jest to, że jestem odpowiedzialny za uruchamianie, gdy zadanie się kończy lub kończy się niepowodzeniem i mam pełną kontrolę nad tym, jak zarządzać wątkami. Jednak ctor ofTaskCompletionSource pozwala mi określić aTaskCreationOptionsi to mnie wprawia w zakłopotanie, ponieważ oczekiwałemScheduler nie jest w stanie samodzielnie wykonać zadania.

Jaki jest celTaskCreationOptions w kontekście aTaskCompletionSource<>?

Oto przykład użycia:

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

questionAnswers(1)

yourAnswerToTheQuestion