【问题标题】:Best way for UI program to check for internal eventUI 程序检查内部事件的最佳方式
【发布时间】:2013-09-15 16:25:07
【问题描述】:

我有一个 WinForms 应用程序,它是运行在逻辑层之上的 UI 层。

我的应用程序是一个客户端-服务器 IM 程序。当内部程序接受传入的连接请求时,我希望通过简单的按钮文本更改来更新 UI。问题是关注点分离、解耦。

执行此操作的一种方法是公开一个内部布尔值,当逻辑层处理请求时会更改该内部布尔值,并由 UI 在其自己的线程上不断检查。

这对我来说似乎不是最好的方法,我认为有更好的内置方法可以做到这一点?

【问题讨论】:

    标签: c# .net multithreading winforms events


    【解决方案1】:

    在“内部”程序中公开一个委托:

    public Action<bool> RequestProcessed { get; set; }
    

    处理请求时内部代码中的某处

    if(RequestProcessed != null)
       RequestProcessed(true);
    

    在 gui 中创建一个方法

    public void SomethingHappend(bool processed) {
      // Do gui stuff
      if(processed) {
      }
      else {
      }
    }
    

    在 gui 中,像这样订阅:

    innerInstance.RequestProcessed = SomethingHappened;
    

    【讨论】:

    • 太棒了。完美运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    • 2023-03-24
    • 2011-02-24
    • 2021-05-03
    • 2013-07-24
    • 2011-01-22
    相关资源
    最近更新 更多