【问题标题】:C# handle multiple events to main UI threadC# 处理多个事件到主 UI 线程
【发布时间】:2015-01-30 05:59:44
【问题描述】:

我有一组对象在其自己的线程(后台工作者)中定期更新。我的主窗体订阅了所有这些对象的 ValueChanged 事件,并相应地更新了一些 UI 元素。

//pseudo code, this loops run on a timer  
foreach (obj myObj in myObjctList )
{
      myObj.Refresh()///// This raises an event if data changed 
}

如果 myObj 引发和事件并且必须等到主 UI 订阅者完成才能继续下一次 Refresh() 迭代,此线程是否会阻塞?

如果是这样,使用任务/线程引发事件是否会更好,这样它就不会阻塞更新线程?不确定这将如何工作/会有多少开销,因为它会不断产生新的任务

【问题讨论】:

    标签: c# multithreading winforms event-handling eventhandler


    【解决方案1】:

    将用于更新 UI 的代码放在这之间...

    public delegate void Action(); // declare as global
          this.BeginInvoke((Action)(() =>
            {           
            // Your UI Updated code  
            }));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多