WindowsPhone |如何中断ThreadPool.QueueUserWorkItem

时间:2013-10-03 18:10:49

标签: windows-phone-7 threadpool

我正在使用ThreadPool.QueueUserWorkItem执行通过POST执行HTTP请求的异步任务。

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

目前我想添加从UI取消上传的可能性。

我有两个问题:

  • 如何实现线程中断?
  • ThreadPool适合我的目标吗?

1 个答案:

答案 0 :(得分: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的属性,它是前一个任务提供的任何返回值。