winform-.NET Compact Framework 3.5中的事件

本文关键字:事件 NET Compact Framework winform- | 更新日期: 2023-09-27 18:28:39

我目前正在开发移动应用程序中的一个功能,该功能需要持续监控是否有蓝牙设备超出范围。如果超出范围,则应禁用设备的相应按钮。我能想到的一个选项是,我通过发送事件,使用计时器定期检查每个连接的蓝牙设备的状态。如果定期检查表明其中一个设备超出范围,则该设备的按钮将被禁用。然而,我想不出任何方法来检测它是否超出范围。在wpf中,我使用了calburn,它可以在应用程序中发送事件。换句话说,当事件发出时,只要应用程序的任何部分订阅了该事件,它们就会接收该事件。有人知道如何做到这一点吗?

感谢您提前提供的帮助。

谢谢,

Charles Lau

winform-.NET Compact Framework 3.5中的事件

CF 3.5有后台工作者(2.0没有)。您可以创建一个后台工作程序,定期检查蓝牙设备的状态,并在状态发生变化时发送ReportProgress事件。您可以订阅活动所需的任何内容。

ReportProgress的默认用法是发送一个显示后台工作进程的int,但是ReportProgress允许您发送一个对象作为第二个参数:http://msdn.microsoft.com/en-us/library/a3zbdb1t.aspx

如果你以前没有使用过BackgroundWorker类,这里有一个快速指南:http://www.albahari.com/threading/part3.aspx

这将很好地与winforms配合使用。它避免了以下模式(用于将调用编组到UI线程上):

 if (ctrl.InvokeRequired)
 {
     ctrl.Invoke(action);
 }
 else
 {
     action();
 }