gpt4 book ai didi

c# - 从另一个线程唤醒一个线程

转载 作者:太空狗 更新时间:2023-10-30 00:13:08 26 4
gpt4 key购买 nike

我正在使用 .NET (C#)。

如果我有 2 个线程运行 T1 和 T2,而 T1 是这样的:

while (true) 
{
dosomething(); //this is a very fast operation
sleep(5 seconds);
}

与此同时,T2 正在做一些完全不同的事情,但有时它需要给 T1 一个刺激,这样它就可以从 sleep 中醒来,即使 sleep 时间还没有到。我该怎么做?

最佳答案

使用 WaitHandle,例如 ManualResetEvent (或 AutoResetEvent )。

在您的类中,声明一个 ManualResetEvent:

private ManualResetEvent myEvent = new ManualResetEvent(false);

线程 1:

while(true) {
doSomething();
myEvent.WaitOne(5000);
myEvent.Reset();
}

线程 2:

myEvent.Set();

Thread1 将等待 5 秒或直到设置 ManualResetEvent,以先到者为准。

编辑:在上面添加了 AutoResetEvent

关于c# - 从另一个线程唤醒一个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/963184/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com