gpt4 book ai didi

C#线程同步

转载 作者:行者123 更新时间:2023-11-30 21:10:14 25 4
gpt4 key购买 nike

我对 C# 线程有疑问。

  1. 我有无穷无尽的进程“worker”,它执行一些操作并在迭代后休眠 3 秒。

  2. 我有一个在给定时间运行的计时器函数。

我需要“计时器函数”做一些事情,然后等待“worker”迭代结束,然后暂停“worker”直到“计时器函数”完成自己的任务,之后计时器函数再次启动“worker”。

我该怎么做?最好的问候保罗

最佳答案

您可以使用等待句柄来控制方法 - 类似于:

private AutoResetEvent mWorkerHandle = new AutoResetEvent(initialState: false);
private AutoResetEvent mTimerHandle = new AutoResetEvent(initialState: false);

// ... Inside method that initializes the threads
{
Thread workerThread = new Thread(new ThreadStart(Worker_DoWork));
Thread timerThread = new Thread(new ThreadStart(Timer_DoWork));

workerThread.Start();
timerThread.Start();

// Signal the timer to execute
mTimerHandle.Set();
}

// ... Example thread methods
private void Worker_DoWork()
{
while (true)
{
// Wait until we are signalled
mWorkerHandle.WaitOne();

// ... Perform execution ...

// Signal the timer
mTimerHandle.Set();
}
}

private void Timer_DoWork()
{
// Signal the worker to do something
mWorkerHandle.Set();

// Wait until we get signalled
mTimerHandle.WaitOne();

// ... Work has finished, do something ...
}

这应该让您了解如何通过 WaitHandle 控制在其他线程上运行的方法。 (在这种情况下,一个 AutoResetEvent )。

关于C#线程同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8601024/

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