Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# winform-.NET Compact Framework 3.5中的事件_C# - Fatal编程技术网

C# winform-.NET Compact Framework 3.5中的事件

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

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

提前谢谢你的帮助

谢谢


Charles Lau

CF 3.5有背景工人(2.0没有)。您可以创建一个反向工作程序,定期检查蓝牙设备的状态,并在其中一个设备的状态更改时发送ReportProgress事件。你可以有任何你需要的订阅活动

ReportProgress的默认用法是发送一个显示后台工作进程的int,但是ReportProgress允许您发送一个对象作为第二个参数:

如果您以前没有使用过BackgroundWorker类,这里有一个快速指南:

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

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