c# - 启动保持事件状态的非阻塞线程的可能方法

标签 c# .net-4.0

有什么可能的方法来启动非阻塞线程,然后运行一些基于 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/

相关文章:

c# - 在 Word 文档中更改或添加模板

c# - C# 中的 SplitContainer 拆分器?

c# - MVC 6 IUrlHelper 依赖注入(inject)

c# - 如何向 DataGrid 添加行和列?

c# - Excel 互操作和数据字段方向

c# - ASP.NET MVC - 如何限制分页元素的数量并在记录较多时使用 '...'(三个点)进行过滤

c# - 如何组织交易?

c# - 最佳实践 LongRunning 任务创建

security - 安全透明方法 X 尝试访问安全关键方法 Y 失败

.net - .NET 4.0构建服务器引用程序集警告MSB3644