启动保持活动的非阻塞线程的可能方法

时间:2012-02-01 04:49:33

标签: c# .net-4.0

启动非阻塞线程然后运行几个基于System.Timers.Timer的任务的可行方法是什么?致力于将此代码编写为非UI库。一世 我们已经看到了类似的问题,他们的建议是将图书馆转换成 Windows服务 - 不确定这是否适合我。

例如Process.Start()将实现非阻塞线程,该线程实例化并执行基于Timers的函数。

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显然会阻塞。

1 个答案:

答案 0 :(得分:3)

只需使用System.Threading.Timer。它是非阻塞的,并在非UI线程上触发事件。