问题描述
针对测量房间门做监测门实现两个动作:开,关,默认为开界面要显示当前门的状态运行按钮,对应房间内状态,点击运行时,门的状态置为关闭默认为未运行状态运行完成按钮实现多线程监测功能当程序启动时监测功能就开启每0.5s查询门的状态,通过多线程来实现当状态为运行&&门为打开状态时,多线程通过委托时间通知主程序,弹出提示对话框,运行状态转为未运行。
解决方案
解决方案二:
大概讲讲思路就可以了,谢谢各位大侠!
解决方案三:
你的问题分了两段,其中第二段很明确的指出了你在1楼中提出的问题
解决方案四:
这么清晰的逻辑,你不会?线程+委托,网上搜搜一大把
解决方案五:
引用3楼bdmh的回复:
这么清晰的逻辑,你不会?线程+委托,网上搜搜一大把
是,我不会。不要站着在行业里老几岁就这么傲慢!
解决方案六:
你的问题就是你的思路,你还有什么不明白的?倒是我不明白了,为什么要用多线程?
解决方案七:
事件+事件响应函数,没有发现使用多线程的必要。
解决方案八:
多线程也可以。一个线程专门用来扫描门的开关状态,以及对门的操作。我的感觉是,LZ在提问时的思路很好,多线程,0.5秒的Sleep啊,委托啊,如何显示啊,LZ你的思路真的很清晰啊。如果你在线程或委托或其他方面有点疑惑,可以单独问。这样大家也好帮你解答。
解决方案九:
引用5楼caozhy的回复:
你的问题就是你的思路,你还有什么不明白的?倒是我不明白了,为什么要用多线程?
我也不明白为什么使用多线程,留的作业。。
解决方案十:
引用8楼upspringway的回复:
我也不明白为什么使用多线程,留的作业。。
因为老师就想看看你对多线程的掌握情况啊。另:这只是一个很简单的上位机控制软件,如果将来做一个大的项目,要监控成百上千个门的时候(比如酒店的门窗管理,空调温度管理等等)那不用多线程是很可怕的。既然是作业,那就当成一个项目,好好的做,至少老师的出发点是好的。
解决方案十一:
该回复于2012-01-29 09:44:51被版主删除
解决方案十二:
引用9楼ttiimm11的回复:
引用8楼upspringway的回复:我也不明白为什么使用多线程,留的作业。。因为老师就想看看你对多线程的掌握情况啊。另:这只是一个很简单的上位机控制软件,如果将来做一个大的项目,要监控成百上千个门的时候(比如酒店的门窗管理,空调温度管理等等)那不用多线程是很可怕的。既然是作业,那就当成一个项目,好好的做,至少老师的出发点是好的。
如果将来做一个大的项目,要监控成百上千个门的时候(比如酒店的门窗管理,空调温度管理等等)那不用多线程是很可怕的。如果你没有做过,就不要误导人家了。
解决方案十三:
除非万不得已,否则不要弄这种timer的代码。这类设计往往出自于一些表面上好像比较喜欢编程,实际上从来没有在大的实际项目中负责任地编程的人之手,这类滥用timer的设计时是非常非常有害的。如果要监控,那么就要在房门实际上打开或者关闭时即时接收它的事件通知或者中断调用,而不是什么碎催地一遍遍每隔0.5s去判断。碎催式的设计,也许一些学生会以为是非常“通用”的一种设计,其实这在实际的工程和产品中是一种非常低级和恶劣的设计,一个产品需要基本的性能,经不起俩两三个这类滥用段时间timer的程序的干扰就会变得用户用起来一卡一卡、用户体验彻底失败了。
解决方案十四:
这类滥用段时间timer的程序的干扰-->这类滥用短的中断间隔时间的timer的程序的干扰
解决方案十五:
至于什么“多线程”,你可以看看Timer。使用System.Threading.Timer组件本来就是多线程的,而使用System.Timers.Timer则要看你有没有给它的SynchronizingObject属性赋值。如果赋值了就直接在这个属性所指的控件的线程上执行。比如说你直接将一个System.Timers.Timer拖入窗体,那么vs设计器就会自动把这个属性设置为窗体自己,于是它的事件就默认在窗体线程上抛出了。使用Timer就是多线程。如果还搞什么“多线程、Sleep阻塞”作业,那么你们的老师就更让我觉得实在是太害人了。
解决方案:
引用11楼caozhy的回复:
引用9楼ttiimm11的回复:引用8楼upspringway的回复:我也不明白为什么使用多线程,留的作业。。因为老师就想看看你对多线程的掌握情况啊。另:这只是一个很简单的上位机控制软件,如果将来做一个大的项目,要监控成百上千个门的时候(比如酒店的门窗管理,空调温度管理等等)那不用多线程是很可怕的。既然是作业,那就当成一个项目,好好的做,至少老师的……
我做过酒店的空调管理,大约300多个监控点,包含灯的开关状态,空调的开关状态,模式,温度.....,用的是TCP/IP协议,多线程,因为空调的处理模块是被动式的,所以我开了个线程去读取每个监控点的状态。真心的请教:1)这样做的弊端是什么?2)应该采用什么样的程序架构?3)12楼Sp1234提到一个“催碎式设计”,我想我属于他说他的“表面喜欢编程,但从未做过大项目”的“新人”,在此也真心请教sp1234,类似于上述项目,应该采用什么样的设计?
解决方案:
我是从新贴传送过来的。……ttiimm11啊,lz没说那个门的状态模块是主动式或者被动式的吧。主动式的状态模块真心的不需要多线程。被动式的状态模块多不多线程那就看硬件处理模块是不是同步信号了。一个根据现有的硬件确定软件架构的事儿有这么复杂么?还需要新开个贴去质问……
解决方案:
你是真心想火么?不用那么复杂的,传个裸照很快就能火。