【发布时间】:2013-04-19 14:40:24
【问题描述】:
从UI,我创建了一些Task,比如:
Task taskCancellaCartellaDestinazione = Task.Factory.StartNew(() => CancellaCartellaDestinazione(), CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default);
taskCancellaCartellaDestinazione.ContinueWith(t => TaskGestioneCartelle(), CancellationToken.None, TaskContinuationOptions.None, TaskScheduler.FromCurrentSynchronizationContext());
每个Task 都有自己的变量名,所以我可以直接访问它。如何停止和释放它们的资源?
比如我点击停止Button,线程必须停止。
在taskCancellaCartellaDestinazione 上我看不到任何Abort() 或Cancel() 函数。
【问题讨论】:
-
我不确定 Task 是否是这里的最佳选择。你试过支持取消的BackgroundWorker吗?
-
我不知道
BackgroundWorker是什么。 -
请查看我写的这个简单示例:pastebin.com/69MDnKx5 要取消它,您只需在您的工作人员上调用 CancelAsync()。
-
@PiotrJustyna 请注意,除非
DoWork方法定期检查是否取消,否则调用CancelAsync不会执行任何操作。 -
@Servy 是的。不过,我不打算在 OP 上强制使用任何取消机制。只是显示任务的替代方案。
标签: c# multithreading winforms task