不断循环Thread.Sleep的问题

aivii 2010-03-04 05:15:58
...
while(true)
{
if(queue.count>100)
{
...
}
else
{
doWork();
Thread.Sleep(5000);
}
}
...
当queue.Count小于100时,就一直在执行Thread.Sleep。
这种写法对系统或者系统资源有影响吗?会不会对当进程死锁,
或者内存泄露或者其它?
...全文
383 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cpp2017 2010-03-04
  • 打赏
  • 举报
回复
线程句柄(对象)要保存起来,程序退出的时候要通知线程退出,并且等待线程先退出。否则会引起数据异常。
xingyuebuyu 2010-03-04
  • 打赏
  • 举报
回复
其实你将queue.count设为一个property,在它的set方法中进行判断,大于100触发一个事件,然后做doWork方法。这样就不用主动轮询,改为被动的事件触发,这样CPU的使用率也比较低,反应也很快
WM_JAWIN 2010-03-04
  • 打赏
  • 举报
回复
最好不要一次sleep(5000)这么久,万一中途程序要退出,会卡住。
aivii 2010-03-04
  • 打赏
  • 举报
回复
这段代码是一个轮循的服务,
cpp2017 2010-03-04
  • 打赏
  • 举报
回复
在线程中不影响当进系统进程,但也要有退出机制。

110,534

社区成员

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

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

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