有什么可能的方法来启动非阻塞线程,然后运行一些基于 System.Timers.Timer 的任务?致力于将此代码编写为非 UI 库。我 见过类似的问题,对它们的建议是将图书馆转变为 Windows 服务 - 不确定这是否适合我。
例如,Process.Start()
将实现非阻塞线程,该线程实例化并执行基于计时器的函数。
public void Start()
{
Timer t1 = new Timer(10000);
Timer t2 = new Timer(15000);
t1.Elapsed += new ElapsedEventHandler(T1Task);
t2.Elapsed += new ElapsedEventHandler(T2Task);
t1.Enabled = true;
t2.Enabled = true;
// the following is blocking, of course
while (true)
{
Thread.sleep(1000);
}
}
在上面的代码中,如果通过 WinForm 调用库调用,GUI 显然会阻塞。
最佳答案
只需使用 System.Threading.Timer。它是非阻塞的,并在非 UI 线程上触发事件。
关于c# - 启动保持事件状态的非阻塞线程的可能方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9090954/