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

本文关键字:释放 任务 资源 删除 UI | 更新日期: 2023-09-27 18:09:58

在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()函数。

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

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

  2. CancellationToken从令牌源传递给CancellaCartellaDestinazione

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

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

  5. 取消任务时,在CancellationTokenSource上调用Cancel