线程应用 针对测量房间门做监测

upspringway 2012-01-16 02:18:49
针对测量房间门做监测
门实现两个动作:开,关,默认为开 界面要显示当前门的状态
运行按钮,对应房间内状态,点击运行时,门的状态置为关闭 默认为未运行状态
运行完成按钮

实现多线程监测功能
当程序启动时监测功能就开启
每0.5s查询门的状态,通过多线程来实现
当状态为运行&&门为打开状态时,多线程通过委托时间通知主程序,弹出提示对话框,运行状态转为未运行。
...全文
316 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
铜臂阿铁木 2012-01-29
  • 打赏
  • 举报
回复
我是从新贴传送过来的。

……
ttiimm11啊,lz没说那个门的状态模块是主动式或者被动式的吧。

主动式的状态模块真心的不需要多线程。
被动式的状态模块多不多线程那就看硬件处理模块是不是同步信号了。

一个根据现有的硬件确定软件架构的事儿有这么复杂么?还需要新开个贴去质问……
ttiimm11 2012-01-28
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 caozhy 的回复:]

引用 9 楼 ttiimm11 的回复:

引用 8 楼 upspringway 的回复:

我也不明白为什么使用多线程,留的作业。。


因为老师就想看看你对多线程的掌握情况啊。
另:这只是一个很简单的上位机控制软件,如果将来做一个大的项目,要监控成百上千个门的时候(比如酒店的门窗管理,空调温度管理等等)那不用多线程是很可怕的。既然是作业,那就当成一个项目,好好的做,至少老师的……
[/Quote]

我做过酒店的空调管理,大约300多个监控点,包含灯的开关状态,空调的开关状态,模式,温度.....,用的是TCP/IP协议,多线程,因为空调的处理模块是被动式的,所以我开了个线程去读取每个监控点的状态。

真心的请教:
1)这样做的弊端是什么?
2)应该采用什么样的程序架构?
3)12楼Sp1234提到一个“催碎式设计”,我想我属于他说他的“表面喜欢编程,但从未做过大项目”的“新人”,在此也真心请教sp1234,类似于上述项目,应该采用什么样的设计?

  • 打赏
  • 举报
回复
至于什么“多线程”,你可以看看Timer。使用System.Threading.Timer组件本来就是多线程的,而使用System.Timers.Timer则要看你有没有给它的SynchronizingObject属性赋值。

如果赋值了就直接在这个属性所指的控件的线程上执行。比如说你直接将一个System.Timers.Timer拖入窗体,那么vs设计器就会自动把这个属性设置为窗体自己,于是它的事件就默认在窗体线程上抛出了。


使用Timer就是多线程。如果还搞什么“多线程、Sleep阻塞”作业,那么你们的老师就更让我觉得实在是太害人了。
  • 打赏
  • 举报
回复
这类滥用段时间timer的程序的干扰 --> 这类滥用短的中断间隔时间的timer的程序的干扰
  • 打赏
  • 举报
回复
除非万不得已,否则不要弄这种timer的代码。这类设计往往出自于一些表面上好像比较喜欢编程,实际上从来没有在大的实际项目中负责任地编程的人之手,这类滥用timer的设计时是非常非常有害的。

如果要监控,那么就要在房门实际上打开或者关闭时即时接收它的事件通知或者中断调用,而不是什么碎催地一遍遍每隔0.5s去判断。碎催式的设计,也许一些学生会以为是非常“通用”的一种设计,其实这在实际的工程和产品中是一种非常低级和恶劣的设计,一个产品需要基本的性能,经不起俩两三个这类滥用段时间timer的程序的干扰就会变得用户用起来一卡一卡、用户体验彻底失败了。
threenewbee 2012-01-22
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ttiimm11 的回复:]

引用 8 楼 upspringway 的回复:

我也不明白为什么使用多线程,留的作业。。


因为老师就想看看你对多线程的掌握情况啊。
另:这只是一个很简单的上位机控制软件,如果将来做一个大的项目,要监控成百上千个门的时候(比如酒店的门窗管理,空调温度管理等等)那不用多线程是很可怕的。既然是作业,那就当成一个项目,好好的做,至少老师的出发点是好的。
[/Quote]

如果将来做一个大的项目,要监控成百上千个门的时候(比如酒店的门窗管理,空调温度管理等等)那不用多线程是很可怕的。

如果你没有做过,就不要误导人家了。
ttiimm11 2012-01-20
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 upspringway 的回复:]

我也不明白为什么使用多线程,留的作业。。
[/Quote]

因为老师就想看看你对多线程的掌握情况啊。
另:这只是一个很简单的上位机控制软件,如果将来做一个大的项目,要监控成百上千个门的时候(比如酒店的门窗管理,空调温度管理等等)那不用多线程是很可怕的。既然是作业,那就当成一个项目,好好的做,至少老师的出发点是好的。
upspringway 2012-01-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 caozhy 的回复:]

你的问题就是你的思路,你还有什么不明白的?

倒是我不明白了,为什么要用多线程?
[/Quote]我也不明白为什么使用多线程,留的作业。。
老毕 2012-01-17
  • 打赏
  • 举报
回复
事件+事件响应函数,没有发现使用多线程的必要。
threenewbee 2012-01-17
  • 打赏
  • 举报
回复
你的问题就是你的思路,你还有什么不明白的?

倒是我不明白了,为什么要用多线程?
upspringway 2012-01-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bdmh 的回复:]

这么清晰的逻辑,你不会?线程+委托,网上搜搜一大把
[/Quote]是,我不会。 不要站着在行业里老几岁就这么傲慢!
ttiimm11 2012-01-17
  • 打赏
  • 举报
回复
多线程也可以。
一个线程专门用来扫描门的开关状态,以及对门的操作。

我的感觉是,LZ在提问时的思路很好,多线程,0.5秒的Sleep啊,委托啊,如何显示啊,LZ你的思路真的很清晰啊。如果你在线程或委托或其他方面有点疑惑,可以单独问。这样大家也好帮你解答。
bdmh 2012-01-16
  • 打赏
  • 举报
回复
这么清晰的逻辑,你不会?线程+委托,网上搜搜一大把
ttiimm11 2012-01-16
  • 打赏
  • 举报
回复
你的问题分了两段,其中第二段很明确的指出了你在1楼中提出的问题
upspringway 2012-01-16
  • 打赏
  • 举报
回复
大概讲讲思路就可以了,谢谢各位大侠!

110,536

社区成员

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

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

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