我有一个 WinForms 应用程序,它是在逻辑层上运行的 UI 层。
我的应用程序是一个客户端-服务器 IM 程序。当内部程序接受传入的连接请求时,我希望通过简单的按钮文本更改来更新 UI。问题是关注点分离、解耦。
做到这一点的一种方法是公开一个内部布尔值,当逻辑层处理请求时它会更改该值,并由 UI 在其自己的线程上不断检查。
这对我来说似乎不是最好的方法,我认为有更好的内置方法可以做到这一点?
我有一个 WinForms 应用程序,它是在逻辑层上运行的 UI 层。
我的应用程序是一个客户端-服务器 IM 程序。当内部程序接受传入的连接请求时,我希望通过简单的按钮文本更改来更新 UI。问题是关注点分离、解耦。
做到这一点的一种方法是公开一个内部布尔值,当逻辑层处理请求时它会更改该值,并由 UI 在其自己的线程上不断检查。
这对我来说似乎不是最好的方法,我认为有更好的内置方法可以做到这一点?
在“内部”程序中公开一个代表:
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;