📅  最后修改于: 2023-12-03 15:24:27.226000             🧑  作者: Mango
在编写C#应用程序时,我们经常需要使用延迟执行的技术。延迟执行是一种让代码在一定条件下被执行的技术,比如在满足某个条件或在一定时间后执行代码。本文将介绍C#中几种常用的延迟执行方式。
Thread.Sleep
方法可以让当前线程暂停执行一段时间。可以使用它来实现简单的延迟执行。
using System.Threading;
// 延迟执行5秒钟
Thread.Sleep(5000);
// 延迟执行10毫秒
Thread.Sleep(10);
注意,Thread.Sleep
方法会阻塞当前线程,因此如果您在UI线程上执行,它会导致UI界面的卡死,建议使用其他方法。
Task.Delay
方法可以在Task
中实现延迟执行。相比于Thread.Sleep
方法,Task.Delay
是一种更加灵活的实现方式。它不会阻塞当前线程,而是返回一个Task
对象,可以在Task
中使用await
关键字等待完成。
using System.Threading.Tasks;
await Task.Delay(5000); // 延迟执行5秒钟
await Task.Delay(10); // 延迟执行10毫秒
Timer
类可以在一定时间后,在后台线程上执行代码。相比于Thread.Sleep
和 Task.Delay
方法,Timer
类更加适合在windows服务中使用。
using System.Threading;
// 延迟10秒钟执行
var timer = new Timer(_ =>
{
//执行代码
}, null, 10000, Timeout.Infinite);
CancellationTokenSource
类可以创建可取消的操作,Task.Delay
方法可以在一定时间后取消Task
操作。
using System.Threading;
using System.Threading.Tasks;
var cts = new CancellationTokenSource();
// 延迟5秒钟执行
await Task.Delay(5000, cts.Token);
// 取消任务
cts.Cancel();
除了上面提到的方法,您还可以使用await Task.Delay
方法实现延迟执行。这是一种更加简单的实现方式,它不会阻塞当前线程,并且可以在Task
中使用await
关键字等待完成。
using System.Threading.Tasks;
// 延迟5秒钟执行
await Task.Delay(5000);
// 延迟10毫秒执行
await Task.Delay(10);
C#中实现延迟执行的技术有很多,比如Thread.Sleep
、Task.Delay
、Timer
、CancellationTokenSource
等。您可以根据具体场景选择相应的技术实现。