C#winform编程中多线程问题,定时器问题,句柄问题
本帖最后由 yujun199901 于 2019-7-31 11:40 编辑本人在公司使用C#winform进行开发,开发过程中遇到了一些问题,求助大佬们的帮助
问题一:多线程问题
我所开发的c/s架构的软件,其中一个界面的功能是,每隔3秒通过http协议的post请求方式发送一段数据到对应的设备主机中,主机返回一串数据,客户端解析数据,反馈到用户界面上.
设备主机上有多个设备,每个设备都有对应的设备id,每个设备都有单独的自定义控件.由于有要求每个设备都要每隔3秒都要查询数据,于是我在自定义控件时,使用了timer这个控件,达到每隔
3秒查询一次的效果,为了防止用户界面卡死,我在timer_strat中使用的方法是多线程的方式.Thread thread=new thread(GetDevicestratus);thread.isbackground=ture;thread.start();之后我在用户
自定义控件中定义了一个方法UserController_VisibleChanged;这个事件中执行了判断UserController.Visible为false就执行---->timer1.stop();这个方法.终止了这个每隔3秒进行查询的功能,然而
在我通过资源管理器中查看在我切换界面后并没有终止查询,并且界面来回切换后,程序所占的cpu资源变得更加的多了.
问题二:定时器-------问题一有关
有没有更好的实现3秒一查的好方法.求助大佬,
问题三:句柄问题------问题一有关
当我关闭程序时,vs开发工具中会产生一个this.invoke();的问题这个现实没有不能.invoke或者beginInvoke();的提示,如何解决
我的表达能力有限还望谅解--------------------------------------------------------------如果有我没讲清楚的地方请在评论区中@我,我看到了就会回复谢谢.
谢谢分享 最好使用quartznet和Hangfire组件,来处理多线程,多任务问题 作为初学者,我认为切换窗口不是改变Visible属性吧,所以通过这个属性判断停止,自然不成立,所以没停止。切换窗口应该改变的是激活状态或者控件焦点吧 .net不止一种timer,尝试一下其他的timer。 wangluo920 发表于 2019-7-19 11:23
作为初学者,我认为切换窗口不是改变Visible属性吧,所以通过这个属性判断停止,自然不成立,所以没停止。 ...
我的切换窗口是将承载该用户自定义控件的panel控件的visible设备为false,我之前好像看过一篇文章,好像是说,父级的visble值会向子对象传递.从而改变自定义控件的visible的值 看一下你写的代码,应该能更好的为你解决问题 本帖最后由 yujun199901 于 2019-7-22 09:24 编辑
wjshan0808 发表于 2019-7-21 21:42
看一下你写的代码,应该能更好的为你解决问题
公司的代码,我没有权利放出来,要是有啥,我还没讲清除的,你问我,我会回答的...
:'(weeqw 哎,不怪楼主,鄙人不才只能看代码解决问题呀{:1_936:} 哎,不怪楼主,鄙人不才只能看代码解决问题呀
页:
[1]