【发布时间】:2020-08-13 09:59:15
【问题描述】:
当我达到某个值时,我尝试暂停所有线程,但我做不到。
我希望当我达到这个值时,所有线程都暂停 10 秒,然后在这 10 秒后所有线程重新启动。
我试过了:Threads.Sleep(); | Threads.Interrupt(); 和 Threads.Abort(); 但没有任何效果。
我尝试了您在下面的代码中看到的内容。
static void Main(string[] args)
{
for (int i = 0; i < 10; i++)
{
Threads.Add(new Thread(new ThreadStart(example)));
Threads[i].Start();
}
for (int i = 0; i < Threads.Count; i++)
Threads[i].Join();
}
static void example()
{
while (true)
{
Console.WriteLine(value++);
checkValue();
}
}
public static void checkValue()
{
if (value% 1000 == 0 && value!= 0)
{
for (int i = 0; i < Threads.Count; i++)
Threads[i].Interrupt();
Thread.Sleep(1000);
for (int i = 0; i < Threads.Count; i++)
Threads[i].Resume();
}
}
【问题讨论】:
-
你试过
Suspend和Resume方法吗? -
另外,如果可以选择协同暂停线程,请查看 Stephen Cleary 的 AsyncEx.Coordination 包中的
PauseTokenSource+PauseToken对。 -
我不明白 AsyncEX 是如何工作的。你能给我解释一下吗? @TheodorZoulias
标签: c# multithreading sleep resume pause