开启while(true)循环线程,导致界面卡死,内存增加

weixin_39516696 2019-09-13 03:03:41
控件怎么使用while(true)循环线程,或有其它方法
...全文
7911 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
HAOLIN_ANDY 2021-10-09
  • 打赏
  • 举报
回复

我目前也遇到了一样的问题,我两种调用方式内存存在溢出和不溢出的情况,第一种就是每次调用到耗时函数时,该线程就start()一次,然后内存会一直增加,而另一种是耗时函数一直while TRUE循环,这样内存就不会溢出。

wilson1966 2019-09-24
  • 打赏
  • 举报
回复
可改用for 循环,我写了多年的程序,老实讲while 不常用,都用for 循环 For { If (true) break; }
  • 打赏
  • 举报
回复
同意一楼,用线程,在线程中while true
weixin_39516696 2019-09-20
  • 打赏
  • 举报
回复
引用 9 楼 良朋的回复:
微软有这个命令,说明它是可以用的,估计你是等待一个全局变量的值的变化再跳出循环,建议你中间加一个thread.sleep(1),哪怕是sleep 1毫秒,都和不加sleep大不一样。

比如调试运动控制卡时,需要轴运动到某个点位,这时候while true命令就简单好用,刷TIMER太麻烦了,因为是在调试过程,不存在UI卡不卡的问题。
好的,多谢,问题已解决了
weixin_39516696 2019-09-20
  • 打赏
  • 举报
回复
引用 8 楼 tangyanzhi1111的回复:
while true 可以用 关键是,你啥时候跳出这个循环 你一直搞下去,搞到你电脑内存100% 直接死机,有几把意思 ?
问题我以解决,你不了解具体问题请不要这样说粗话
weixin_39516696 2019-09-20
  • 打赏
  • 举报
回复
引用 1 楼 HyoJung的回复:
开启线程,结果委托给ui线程
多谢,问题以解决,以运行稳定!
dengfeil 2019-09-19
  • 打赏
  • 举报
回复
开启背景线程或者timer
  • 打赏
  • 举报
回复
你可以使用while(true)来循环创建线程,比如在socket通信中,服务器端就需要利用while(true)来不断监听客户端的请求,不断新建各自的通信线程。但是你必须要想到什么时候才需要创建线程,什么时候线程又会释放,如果无意义的一直新建线程,不只是页面卡死,电脑都会死机。你提的问题太笼统了,你把需求说出来,或者把代码发出来啊,直接这么问鬼知道你说的是啥
XBodhi. 2019-09-19
  • 打赏
  • 举报
回复
你可以用 timer 看看
代码羊羊 2019-09-18
  • 打赏
  • 举报
回复
很多源码中也会用到while(true)或者无限for循环,尤其在在获取锁的过程中可能就要无限循环去尝试获取锁。最主要的一点就是你要有临界条件或者退出条件,在编程的时候可以sleep或者wait一下
  • 打赏
  • 举报
回复
初学者和不了解程序运行的各种原理的人不建议使用
while(true)
{
//你的代码段
}
goto #lable
原因很简单,因为虽然方便但是你需要用更多的时间和精力考虑怎么用更安全高效。 按照你跟楼上各位的交流来看,你还不合适用这些。
by_封爱 版主 2019-09-16
  • 打赏
  • 举报
回复
所以 你的代码是

while(true)
{
 var t=new thread()....
 t.start();
}
你这代码 给你全宇宙最牛逼的电脑 也运行不了啊... 不如你说说你想实现什么需求? 我觉得可能只是一个定时器就能解决的问题...非得要弄这么复杂..
果然C 2019-09-16
  • 打赏
  • 举报
回复
这是死循环吧
  • 打赏
  • 举报
回复
while(true) 就是使用大忌。。。。
Dusdii@126.com 2019-09-16
  • 打赏
  • 举报
回复
没事 断电重启就好了
正怒月神 2019-09-16
  • 打赏
  • 举报
回复
你直接用线程池就好啦。 有任务,就塞给线程池去做。 作为新手的话, 先不用纠结放弃策略,只要关心线程数量上限,以及记录异常日志就好。
良朋 2019-09-16
  • 打赏
  • 举报
回复
微软有这个命令,说明它是可以用的,估计你是等待一个全局变量的值的变化再跳出循环,建议你中间加一个thread.sleep(1),哪怕是sleep 1毫秒,都和不加sleep大不一样。

比如调试运动控制卡时,需要轴运动到某个点位,这时候while true命令就简单好用,刷TIMER太麻烦了,因为是在调试过程,不存在UI卡不卡的问题。
江湖评谈 2019-09-16
  • 打赏
  • 举报
回复
while true 可以用 关键是,你啥时候跳出这个循环 你一直搞下去,搞到你电脑内存100% 直接死机,有几把意思 ?
XBodhi. 2019-09-14
  • 打赏
  • 举报
回复
注意内存溢出和线程
number1killer 2019-09-13
  • 打赏
  • 举报
回复
引用 楼主 weixin_39516696 的回复:
控件怎么使用while(true)循环线程,或有其它方法

while(true)楼主确定????
加载更多回复(2)

111,094

社区成员

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

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

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