0

を介してリクエストをThreadPool.QueueUserWorkItem行う非同期タスクを実行するために使用しています。POSTHTTP

ThreadPool.QueueUserWorkItem(new WaitCallback(UploadPhoto), photoFileName);

今のところ、UI からのアップロードのキャンセルの可能性を追加したいと考えています。

2 つの質問があります。

  • スレッドの中断をどのように実現できますか?
  • ThreadPoolのターゲットに適していますか?
4

1 に答える 1

2

Task.Factory.StartNewを使用してWP7で非同期作業を行うことを検討してください。CancellationTokensを使用してキャンセルを強制できます。これが私の非同期作業のやり方です。中断を実現するには、次のことを実行できます (タスクを使用)。

var task = Task.Factory.StartNew( ( )=>
{
    // some operation that will be cancelled
    return "some value";
})
.ContinueWith( result =>
{
    if(result.Status == TaskStatus.Cancelled) // you have other options here too
    {
        // handle the cancel
    }
    else
    {
        string val = result.Result; // will be "some value";
    }
});

ContinueWith 句は、最初のタスクの本体が完了した後に発生する別のメソッドをチェーンします (何らかの方法で)。ContinueWith メソッドのパラメーター 'result' は、ContinueWith がチェーンされている Task であり、タスク 'result' には Result というプロパティがあり、前のタスクによって提供される戻り値です。

于 2013-10-03T18:14:38.857 に答える