【发布时间】:2012-01-30 19:10:46
【问题描述】:
我有 C# windows 窗体应用程序,它可以从连接的设备查询数据。我目前启动了一个 System.Timer.Timer,它设置为每 20 毫秒触发一次,并从连接的工具中获取数据。这工作正常,但当然 UI 对数据计数的更新、数据计算的最终结果等等变得无响应。我还在几个 OpenGL 窗口中显示数据,所以有很多事情要做。
_timer1 = new System.Timers.Timer{
Interval = Convert.ToDouble(txtElapse.Text),
Enabled = true};
_timer1.Elapsed += Timer1Elapsed;
然后我使用然后使表单无效来为 OpenGL 重绘,这就是我所有计算等的执行位置。
我的问题是与线程有关,基本上是在什么时候或将线程逻辑应用于哪个对象?计时器本身?如果我这样做,我将无法调试,它就在那里。我已经对 ThreadPools、Backgroundworker、Thread 等进行了大量研究,但没有针对这种情况,因为我认为(错误地?)计时器默认在自己的线程上运行。
【问题讨论】:
标签: c# multithreading user-interface