gpt4 book ai didi

c# - 监控工具在 c# 中拆分 gui 和后端代码

转载 作者:行者123 更新时间:2023-11-30 12:12:34 24 4
gpt4 key购买 nike

我有一个监控某些设备的应用程序。我可以向设备发送一个字符串,然后从设备接收文本。

我需要制作一个日志文件(只是 .txt)来记录设备发送/接收的所有数据。这应该在应用程序中实时显示。

目前我所做的是将日志写入富文本框,然后从那里写入文件。但我想从 gui 中拆分后端代码(与设备连接并创建日志文件)。这使得与设备的通信接口(interface)更加便携。

当我思考这个过程时,我面临一个问题:如何在我的应用程序中实时更新日志?我可以想到这个选项:制作一个计时器并按时间间隔更新 gui。但这并不可怕。最好在两者之间有一个缓冲区,如果缓冲区发生变化则更新 gui。

关于如何正确执行此操作的任何提示?

最佳答案

也许你可以让你的日志内容IObservable并让您的 UI 订阅它的更改?

另一种选择是实现 INotifyPropertyChanged并使用 PropertyChangedEventHandler 接收更改通知。

这是一个代码片段,向您展示了如何使用 NotifyPropertyChanged 执行此操作:

using System.ComponentModel;
public class YourClass : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}

protected void AddLogLine(String log)
{
// do your process
NotifyPropertyChanged("Log");
}
}

要注册更改,您只需执行以下操作(在您的 UI 构造函数中):

YourClassInstance.PropertyChanged += new PropertyChangedEventHandler(MyFunctionToHandleLogChanges);

注意:如果更改 YourClassInstance,请确保正确删除并重新添加处理程序

然后再次在您的 UI 类中更新您的 UI:

void MyFunctionToHandleLogChanges(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == "Log")
{
// Update UI
}
}

关于c# - 监控工具在 c# 中拆分 gui 和后端代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13381160/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com