multithreading - 在.NET中启动 sleep 线程

标签 multithreading

如果一个线程正在休眠,那么另一个线程线程将如何调用threadA来启动?
请提供一个示例(如果可能)。

最佳答案

除了 sleep 之外,您还需要创建一个EventWaitHandle并在超时的情况下使用WaitOne

当您希望线程提早唤醒时,只需将事件设置为已通知。

首先创建EventWaitHandle:

wakeUpEvent = new EventWaitHandle(false, EventResetMode.ManualReset);

然后在您的线程中:
wakeUpEvent.WaitOne(new TimeSpan(1, 0, 0));

当主程序想提早唤醒线程时:
wakeUpEvent.Set();

注意:您可以将事件设置为自动重置或手动重置。自动重置意味着一旦WaitOne从事件中返回,它将把它设置回没有信号的状态。如果您处于循环中并且发出多次信号,这将很有用。

关于multithreading - 在.NET中启动 sleep 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2260047/

相关文章:

c# - 在控制台或 Web 应用程序中使用 async/await

multithreading - 线程安全的内存缓存

java - java中的ReentrantLock条件等待获取IllegalMonitorStateException

ruby-on-rails - 如何在使用 activerecords 和多线程时管理打开和关闭数据库连接

java - 如何在JAVA中设置 native 内存

.net - "Hello World"用于基于任务的异步模式?

swift - 更新从后台线程更改 UI 的变量 - SWIFTUI

c# - 使用计时器将 List<class> 保存到 DB 时出现问题,并且 List 由多线程写入

java - Java Concurrency 中的示例在实践中如何保证线程安全

c# - 在 C# 中使用 ThreadPool 的 lock 语句