在c#中使用线程延迟执行方法

Posted

技术标签:

【中文标题】在c#中使用线程延迟执行方法【英文标题】:Delay execution of a method using Thread in c# 【发布时间】:2017-07-25 23:44:05 【问题描述】:

我需要使用 Thread 将方法的执行延迟几秒钟。

但是当我使用Thread.Sleep(1000); 时,它会阻止 UI 执行。

有人建议我使用Task.Delay(1000).Wait();。但它在框架 4.0 中不起作用。 我可以使用定时器来做到这一点。但我需要使用 Thread 来实现。

由于我是新手,我无法理解类似问题中提供的答案。

谁能告诉我如何在不阻塞 UI 的情况下实现方法的延迟执行。

提前致谢。

【问题讨论】:

“我可以使用定时器来做到这一点。但我需要使用线程来实现” - 定时器回调有什么问题?为什么要创建单独的线程? 为什么定时器对你不起作用?更多信息会更好 - 什么样的应用程序(我假设是 winforms 或 wpf 桌面?) 每次按键都会调用我需要延迟的方法。这就像从列表中搜索一个名字。 @MohanramAnbukkarasu:嗯,最好问问上级他的要求。正如它所说,它看起来很奇怪。根据您的 cmets,您需要的是计时器。 感谢您的建议。@Dennis 【参考方案1】:

您需要等待任务以避免阻塞 ui 线程。

await Task.Delay(1000)

【讨论】:

在 .net 4 中检查 Task.Delay 的实现:***.com/questions/15341962/…

以上是关于在c#中使用线程延迟执行方法的主要内容,如果未能解决你的问题,请参考以下文章

延迟并唤醒正在执行的任务? (任务.延迟?)

java中如何是方法延迟执行?

C# 中 UI 线程和子进程之间的低延迟 IPC [关闭]

加载时显示 C# 延迟模式对话框,同时允许继续执行

如何在不使用睡眠的情况下在 C# 中执行短暂的延迟?

C#控制台 延迟执行下一行语句