0

我正在使用ThreadPool.QueueUserWorkItemfor 做一个POST通过HTTP.

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

现在我想增加从 UI 取消上传的可能性。

我有两个问题:

  • 如何实现线程中断?
  • 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 回答