我正在使用ThreadPool.QueueUserWorkItem
for 做一个POST
通过HTTP
.
ThreadPool.QueueUserWorkItem(new WaitCallback(UploadPhoto), photoFileName);
现在我想增加从 UI 取消上传的可能性。
我有两个问题:
- 如何实现线程中断?
ThreadPool
适合我的目标吗?
我正在使用ThreadPool.QueueUserWorkItem
for 做一个POST
通过HTTP
.
ThreadPool.QueueUserWorkItem(new WaitCallback(UploadPhoto), photoFileName);
现在我想增加从 UI 取消上传的可能性。
我有两个问题:
ThreadPool
适合我的目标吗?考虑使用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 的属性,它是前面任务提供的任何返回值。