0

从 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都有自己的变量名,所以我可以直接访问它。如何停止和释放它们的资源?

例如,如果我单击 stop Button,则必须停止线程。

taskCancellaCartellaDestinazione我没有看到任何Abort()Cancel()功能。

4

1 回答 1

2
  1. CancellationTokenSource在开始任务之前创建一个。

  2. CancellationToken来自令牌源的 传递给CancellaCartellaDestinazione

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

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

  5. 当您想取消任务时,请调用Cancel.CancellationTokenSource

于 2013-04-19T14:48:53.327 回答