📜  如何在c#中延迟执行(1)

📅  最后修改于: 2023-12-03 15:24:27.226000             🧑  作者: Mango

如何在C#中延迟执行

在编写C#应用程序时,我们经常需要使用延迟执行的技术。延迟执行是一种让代码在一定条件下被执行的技术,比如在满足某个条件或在一定时间后执行代码。本文将介绍C#中几种常用的延迟执行方式。

1. Thread.Sleep

Thread.Sleep 方法可以让当前线程暂停执行一段时间。可以使用它来实现简单的延迟执行。

using System.Threading;

// 延迟执行5秒钟
Thread.Sleep(5000);

// 延迟执行10毫秒
Thread.Sleep(10);

注意,Thread.Sleep 方法会阻塞当前线程,因此如果您在UI线程上执行,它会导致UI界面的卡死,建议使用其他方法。

2. Task.Delay

Task.Delay 方法可以在Task中实现延迟执行。相比于Thread.Sleep 方法,Task.Delay 是一种更加灵活的实现方式。它不会阻塞当前线程,而是返回一个Task对象,可以在Task中使用await关键字等待完成。

using System.Threading.Tasks;

await Task.Delay(5000); // 延迟执行5秒钟
await Task.Delay(10); // 延迟执行10毫秒
3. Timer

Timer 类可以在一定时间后,在后台线程上执行代码。相比于Thread.SleepTask.Delay 方法,Timer 类更加适合在windows服务中使用。

using System.Threading;

// 延迟10秒钟执行
var timer = new Timer(_ => 
{
    //执行代码
}, null, 10000, Timeout.Infinite);
4. CancellationTokenSource 和 Task.Delay

CancellationTokenSource 类可以创建可取消的操作,Task.Delay 方法可以在一定时间后取消Task操作。

using System.Threading;
using System.Threading.Tasks;

var cts = new CancellationTokenSource();
// 延迟5秒钟执行
await Task.Delay(5000, cts.Token);

// 取消任务
cts.Cancel();
5. await Task.Delay

除了上面提到的方法,您还可以使用await Task.Delay 方法实现延迟执行。这是一种更加简单的实现方式,它不会阻塞当前线程,并且可以在Task中使用await关键字等待完成。

using System.Threading.Tasks;

// 延迟5秒钟执行
await Task.Delay(5000);

// 延迟10毫秒执行
await Task.Delay(10);
结语

C#中实现延迟执行的技术有很多,比如Thread.SleepTask.DelayTimerCancellationTokenSource 等。您可以根据具体场景选择相应的技术实现。