我是一个刚上大三的学生,帮学校做了一个自动往led大屏发送课表的winform程序(是二次开发)。学校要求的功能是每天定时发送课表信息。现在程序可以正常运行,但是一旦到设定时间自动发送节目时,服务器的CPU占用率就非常的高,发送结束后CPU占用率就一直高居不下。今天下午改了代码在每次添加节目,和发送节目两个自动执行的函数之间加上Thread.Sleep(2000)后CPU占用率倒是从90%多降到了50%左右,但是依旧非常的高。想问下有什么好的解决办法吗?
我是一个刚上大三的学生,帮学校做了一个自动往led大屏发送课表的winform程序(是二次开发)。学校要求的功能是每天定时发送课表信息。现在程序可以正常运行,但是一旦到设定时间自动发送节目时,服务器的CPU占用率就非常的高,发送结束后CPU占用率就一直高居不下。今天下午改了代码在每次添加节目,和发送节目两个自动执行的函数之间加上Thread.Sleep(2000)后CPU占用率倒是从90%多降到了50%左右,但是依旧非常的高。想问下有什么好的解决办法吗?
请问你是如何"自动"执行添加节目与发送的节目这两个功能的呢
是写一个死循环去判断时间,然后在主线程内调用添加节目与发送的节目的吗?
你可以在主循环里面判断时间,到了指定的时间,然后启动其他线程去处理添加节目与发送节目函数,为了防止重复调用,可以使用一些锁变量来保证不会重复调用
估计这个同学用了timer控件,然后做定时查询发送动作。异步并没有做好,应该是线程阻塞了,建议另起一个线程进行访问每访问一次sleep(10)毫秒