在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()
个功能。
答案 0 :(得分:2)
在开始任务之前创建CancellationTokenSource
。
将CancellationToken
从令牌来源传递到CancellaCartellaDestinazione
。
在CancellaCartellaDestinazione
的正文中,定期检查取消令牌是否已请求取消,在大多数情况下,调用ThrowIfCancellationRequested()
是合适的。
将该取消令牌传递给StartNew
而不是CancellationToken.None
。
如果您要取消该任务,请致电Cancel
上的CancellationTokenSource
。