如何通知Form状体数据准备完毕

liangboone 2014-12-22 10:30:37
各位大侠好!

本人正在写一个小程序,方面产品调试。
要求:
(1)通过CAN总线接受一批数据,数据接受完毕后通知窗体Form更新显示;同时,在接受下一批数据。
(2)由于CAN数据量较大,我新建了一个线程专门接受和处理数据(CANDatabase类中新建了RX_Thread的线程)。

目前做法:
(1) 在CANDatabase类中有一个变量CAN_Status来表示当前接受数据的状态,当CAN数据一批接受完毕后讲该标志设置为CAN_DATA_READY, 平时为CAN_NO_DATA。
(2)在Form类中一直判断该标志,结构如下
while (true)
{
Application.DoEvents();
Thread.Sleep(5);
if (db.CAN_Status == CAN_DATA_READY)
{
//显示一些信息
db.CAN_Status = CAN_NO_DATA;
}
}

现在用查询标志的方式也是可以的,这种还是嵌入式C语言的变成方法,总感觉不好。请教,C#有没有什么简单有效的办法。谢谢!
...全文
94 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
exception92 2014-12-23
  • 打赏
  • 举报
回复
使用委托,新建委托,例如:

DlgGetData(object data);
放到与form窗体类同级namespace下。 在form中使用,例如,
public static DlgGetData    myDlgGetData;
在默认构造函数中 窗体中的某个方式赋值给myDlgGetData,参数要保持一致。 调用,Form.myDlgGetData(数据);
liangboone 2014-12-23
  • 打赏
  • 举报
回复
百度看了些资料,用事件和委托,然后利用observe模式最方便了。谢谢大家的回复。
devmiao 2014-12-22
  • 打赏
  • 举报
回复
用事件和委托代替轮询。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧