首页 新闻 会员 周边

请教一个事件问题

0
悬赏园豆:15 [已解决问题] 解决于 2019-07-09 07:00

请问下我在定时器里监控一个设备上的数据,当这个设备的一个值为0的时候
触发一个提示框,等我处理完后,继续监视。
请问下WINFROM 里的事件回调 怎么写啊

男人要爽的主页 男人要爽 | 初学一级 | 园豆:6
提问于:2019-06-12 17:55
< >
分享
最佳答案
0

我写了一个简易的DEMO,逻辑是这样的,您看下满不满足您的需求。

定义一个 通知 的委托:假设定义如下:
private delegate void NotifyMe(string args);

然后我们去实现一个满足这样的委托的 function

 private void NotifyMeRobert(string args)
        {
            Console.WriteLine(args + "1400874454654");

            label1.Text = args + "10086";
        }

再 定义一个通知事件 private event NotifyMe notify;
并在 Form 加载时订阅

public Form1()
        {
            InitializeComponent();
            notify += NotifyMeRobert;
        }

最后实在你处理逻辑的地方 raise 这个事件

private void button1_Click(object sender, EventArgs e)
        {
            if (DateTime.Now.Second % 2 == 0)
            {
                notify(DateTime.Now.Second.ToString());
            }
        }

PS:上述代码纯属逻辑演示。

PS:推荐使用类库中的委托 Action<T> 和 Func<T1,T2,TResult>

收获园豆:10
BUTTERAPPLE | 老鸟四级 |园豆:3190 | 2019-06-12 20:00
其他回答(1)
1

public event Action OnDeviceValueZero;

timer_loop()=> if(getDeviceValue()==0)OnDeviceValueZero?.Invoke();

楼上写法太过复杂。

收获园豆:5
花飘水流兮 | 园豆:13560 (专家六级) | 2019-06-12 20:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册