一个winform小项目中,运行程序后cpu占用率高居不下。。。。

我是一个刚上大三的学生,帮学校做了一个自动往led大屏发送课表的winform程序(是二次开发)。学校要求的功能是每天定时发送课表信息。现在程序可以正常运行,但是一旦到设定时间自动发送节目时,服务器的CPU占用率就非常的高,发送结束后CPU占用率就一直高居不下。今天下午改了代码在每次添加节目,和发送节目两个自动执行的函数之间加上Thread.Sleep(2000)后CPU占用率倒是从90%多降到了50%左右,但是依旧非常的高。想问下有什么好的解决办法吗?

阅读 6.9k
3 个回答

估计这个同学用了timer控件,然后做定时查询发送动作。异步并没有做好,应该是线程阻塞了,建议另起一个线程进行访问每访问一次sleep(10)毫秒

请问你是如何"自动"执行添加节目与发送的节目这两个功能的呢
是写一个死循环去判断时间,然后在主线程内调用添加节目与发送的节目的吗?
你可以在主循环里面判断时间,到了指定的时间,然后启动其他线程去处理添加节目与发送节目函数,为了防止重复调用,可以使用一些锁变量来保证不会重复调用

感谢@羊爸爸,@JimersyLee十分感谢你们的解答。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进