c#task加定时功能的线程怎么回收的实例
时间: 2023-11-27 20:55:03 浏览: 58
在 C# 中,使用 `Task` 和定时功能的线程可以通过以下步骤进行回收:
1. 首先,您需要使用 `CancellationTokenSource` 对象来创建一个 `CancellationToken`,并将其传递给您的 `Task` 或定时功能线程。这将允许您在需要时取消任务或线程。
2. 然后,您可以使用 `Task.Wait()` 方法或 `Thread.Join()` 方法来等待任务或线程完成。这将使您的应用程序阻塞,直到任务或线程完成为止。
3. 最后,您可以使用 `CancellationTokenSource.Cancel()` 方法来取消任务或线程,并在必要时清理资源。
以下是一个示例代码:
```csharp
using System;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
CancellationTokenSource cts = new CancellationTokenSource();
Task task = Task.Run(() => {
while (!cts.Token.IsCancellationRequested) {
// your task code here
}
}, cts.Token);
// wait for 5 seconds
await Task.Delay(5000);
// cancel the task
cts.Cancel();
// wait for the task to complete
try {
await task;
} catch (TaskCanceledException) {
Console.WriteLine("Task was cancelled.");
}
}
}
```
在此示例中,我们首先创建了一个 `CancellationTokenSource` 对象,并将其传递给我们的任务。然后,我们使用 `Task.Delay()` 方法等待 5 秒钟,然后调用 `CancellationTokenSource.Cancel()` 方法来取消任务。最后,我们使用 `Task.Wait()` 方法等待任务完成,并处理可能发生的 `TaskCanceledException` 异常。
阅读全文