C#实现不影响当前线程情况下间隔一定的时间执行一段代码

本文介绍了在C#中如何不阻塞主线程地定时执行代码的方法,避免使用会导致界面卡顿的Thread.Sleep()和Timer控件。推荐使用Task.Factory.StartNew结合Thread.Sleep()来实现定时任务,并对比了Task与ThreadPool的区别。
部署运行你感兴趣的模型镜像

大家知道C#间隔一定时间去执行一段代码,常用的有

1. Thread.Sleep(多少毫秒);

2. 使用Timer控件间隔一定的时间,设置执行一次

以上两种方法,实现起来不难,弊端在于会阻塞当前线程,界面会卡住,不友好

下面介绍一种更好的方式,

//隔设定的时间在执行代码 
                    Task.Factory.StartNew(() =>
                    {
                        System.Threading.Thread.Sleep(5000);
                        //要执行的代码段
               …… });

Task是Net4.0 新加入的,用来替代ThreadPool,调用ThreadPool的QueueUserWorkItem这个技术存在许多限制。其中最大的问题是没有一个内建的机制让你知道操作在什么时候完成,也没有一个机制在操作完成是获得一个返回值,Microsoft为了克服这些限制(同时解决其他一些问题),引入了任务(tasks)的概念。

Task两种调用方式:
Task.Factory.StartNew(
() =>
{


Console.WriteLine("任务开始工作……");
//模拟工作过程
Thread.Sleep(1000);
}
);


二:
Task t = new Task(() =>
{
while (!cts.Token.IsCancellationRequested)
{
Console.WriteLine("任务开始工作……");
//模拟工作过程
Thread.Sleep(1000);
}


});
t.Start();


t.ContinueWith((task) =>
{
Console.WriteLine("任务完成,完成时候的状态为:");
});


cts.Token.Cancel();

 

转载于:https://www.cnblogs.com/y114113/p/6613823.html

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值