如何从UI中删除/释放任务资源?

时间:2013-04-19 14:40:24

标签: c# multithreading winforms task

在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()个功能。

1 个答案:

答案 0 :(得分:2)

  1. 在开始任务之前创建CancellationTokenSource

  2. CancellationToken从令牌来源传递到CancellaCartellaDestinazione

  3. CancellaCartellaDestinazione的正文中,定期检查取消令牌是否已请求取消,在大多数情况下,调用ThrowIfCancellationRequested()是合适的。

  4. 将该取消令牌传递给StartNew而不是CancellationToken.None

  5. 如果您要取消该任务,请致电Cancel上的CancellationTokenSource