0

我编写了一个 C# .NET 5 应用程序,当系统中有可用的串行端口资源时,它需要通知应用程序用户。目前,用户必须按下刷新按钮,以便在 UI 中列出所有当前可用的串行端口(通过调用 SerialPort 类的静态方法 GetPortNames)。但我希望系统能够自动通知用户端口可用性的变化。有没有办法在.NET中做到这一点?我正在考虑类似于 FileSystemWatcher 的东西。例如,当 COM 端口可用/不可用时调用的事件处理程序?如果使用托管代码解决方案无法做到这一点,那么是否可以使用 P/Invoke 或其他方式来实现。

4

1 回答 1

0

我假设您使用的是 Windows 窗体应用程序。在这种情况下,您需要保留要更新的 Windows 窗体的引用。您可以将此对象的此引用保留在您想要的任何位置。

请记住,如果您在另一个线程上运行您的串行端口,它不能修改表单上的元素,因为只有 UI 线程可以这样做。

在 UI 线程上修改 UI 元素的更简单方法是调用 Inkove 方法:

form.Invoke(... reference to the method)
于 2021-10-20T23:10:50.560 回答