c# - com 端口可用性更改后刷新 ui
问题描述
我编写了一个 C# .NET 5 应用程序,当系统中有可用的串行端口资源时,它需要通知应用程序用户。目前,用户必须按下刷新按钮,以便在 UI 中列出所有当前可用的串行端口(通过调用 SerialPort 类的静态方法 GetPortNames)。但我希望系统能够自动通知用户端口可用性的变化。有没有办法在.NET中做到这一点?我正在考虑类似于 FileSystemWatcher 的东西。例如,当 COM 端口可用/不可用时调用的事件处理程序?如果使用托管代码解决方案无法做到这一点,那么是否可以使用 P/Invoke 或其他方式来实现。
解决方案
我假设您使用的是 Windows 窗体应用程序。在这种情况下,您需要保留要更新的 Windows 窗体的引用。您可以将此对象的此引用保留在您想要的任何位置。
请记住,如果您在另一个线程上运行您的串行端口,它不能修改表单上的元素,因为只有 UI 线程可以这样做。
在 UI 线程上修改 UI 元素的更简单方法是调用 Inkove 方法:
form.Invoke(... reference to the method)
推荐阅读
- eclipse - com.amazonaws.services.lambda.runtime.events 不包含 SQSEvent
- javascript - javascript 调用将 url 声明为 GET
- javascript - 在innerHTML 中查找innerText 索引?
- html - 如何将png图像转换为内联svg
- regex - LoadXml - 根级别的数据无效。第 1 行,位置 1
- postgresql - 从返回多列的函数中选择
- r - 从文本字符串中获取字符串的唯一计数
- dynamics-crm - Teams 与 Microsoft Dynamics CRM 365 的集成
- php - php 获取总和数组,但有“通知”未定义的偏移量:0
- bash - rsync 将内容从 joe@remote:/foo/bar/baz 复制到 b 而不创建 b/foo/bar/a