关于c# 程序长时间运行问题。

失落的神庙 2015-08-05 02:50:29
sos 程序运行 5个小时后 刷新界面很卡,最小化还原后界面就黑了。
任务管理器切tab也很卡。重启程序正常。
5个小时内。 内存占用一直稳定在20M左右。
不过错误页面 每小时 1000w左右。
程序主要功能是 句柄截图识图找坐标 点击。
某内存地址的值锁定(每秒修改成指定值)。

求解惑。
...全文
945 38 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
38 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangjileishang 2019-04-21
  • 打赏
  • 举报
回复
能否我前期568640842@qq.com
wangjileishang 2019-04-21
  • 打赏
  • 举报
回复
大哥,能否给一个“c#版winpcap”包给我,我都没有那么多分
woaip1993 2018-01-03
  • 打赏
  • 举报
回复
楼主您好,现在我也是做了一个点击工具,找窗口,然后点击指定位置,点击的时候也会描点。情况和你的类似,请问下,该怎么解决。
泡泡龙 2015-08-08
  • 打赏
  • 举报
回复
看看gdi数量,估计是有没释放的
失落的神庙 2015-08-06
  • 打赏
  • 举报
回复
引用 5 楼 Z65443344 的回复:
也有可能是显存不足了
是吃了显卡。好像是找图类造成的。 结贴。
失落的神庙 2015-08-05
  • 打赏
  • 举报
回复
引用 32 楼 ajianchina 的回复:
你把sleep调小并不是发现问题并解决问题的方法,完整的一个任务过程在额定计算性能的计算机上会有一个极限值,也就是讲至少需要多长时间才能处理完毕,仅能在他的处理能力范围内才可正常工作,反之,一个原本正常的程序,将sleep放小,马上异常就会出来,将任务交给一个能力有限的人在不可能完成任务的时间内去处理任务,结果可想而已,没有完成任务所暴露出的异常是真正的异常吗?完全不是。
嗯。
ajianchina 2015-08-05
  • 打赏
  • 举报
回复
你把sleep调小并不是发现问题并解决问题的方法,完整的一个任务过程在额定计算性能的计算机上会有一个极限值,也就是讲至少需要多长时间才能处理完毕,仅能在他的处理能力范围内才可正常工作,反之,一个原本正常的程序,将sleep放小,马上异常就会出来,将任务交给一个能力有限的人在不可能完成任务的时间内去处理任务,结果可想而已,没有完成任务所暴露出的异常是真正的异常吗?完全不是。
失落的神庙 2015-08-05
  • 打赏
  • 举报
回复
引用 30 楼 xian_wwq 的回复:
OK
xian_wwq 2015-08-05
  • 打赏
  • 举报
回复
引用 29 楼 wawd74520 的回复:
[quote=引用 28 楼 ajianchina 的回复:] 你这似乎是外挂的节奏啊,如果安装VS的机器不太好进行实际测试的话,其实还有一个方法容易来判断的,那就是将速度调低一些,如果不出现卡死的问题,那么原先的问题基本上可以确定为线程堆叠。
有vs。 主要是5小时一次太麻烦了。 [/quote] 1.测试的时候为了把问题充分暴露,把线程中sleep的地方都调到最小 想办法让问题快速重现 2.关注下句柄有没有泄漏,可以使用ProcessExplorer
失落的神庙 2015-08-05
  • 打赏
  • 举报
回复
引用 28 楼 ajianchina 的回复:
你这似乎是外挂的节奏啊,如果安装VS的机器不太好进行实际测试的话,其实还有一个方法容易来判断的,那就是将速度调低一些,如果不出现卡死的问题,那么原先的问题基本上可以确定为线程堆叠。
有vs。 主要是5小时一次太麻烦了。
ajianchina 2015-08-05
  • 打赏
  • 举报
回复
你这似乎是外挂的节奏啊,如果安装VS的机器不太好进行实际测试的话,其实还有一个方法容易来判断的,那就是将速度调低一些,如果不出现卡死的问题,那么原先的问题基本上可以确定为线程堆叠。
失落的神庙 2015-08-05
  • 打赏
  • 举报
回复
引用 24 楼 liuqian4243 的回复:
找出哪里占用资源的,
只看见 任务管理器 错误页面 数值很大 一秒增加3000个 桌面截图执行一下 就是 1000多错误页面。 人家说正常。 - - 我感觉。 任务管理器用于存错误页面的也有限制吧。 如果一秒3000多。 可能用不了多久 就溢出了。 目前就找到这个地方有问题。
  • 打赏
  • 举报
回复
引用 16 楼 Z65443344 的回复:
如果真的交换到硬盘上,你觉得程序能在硬盘里执行吗
注意我说的是内存交换文件,确实在硬盘上。你可以去查资料
失落的神庙 2015-08-05
  • 打赏
  • 举报
回复
引用 22 楼 ajianchina 的回复:
我扫视了一下你的代码,觉得极可能堆叠
OK。 我测试去了 、
Ny-6000 2015-08-05
  • 打赏
  • 举报
回复
找出哪里占用资源的,
Ny-6000 2015-08-05
  • 打赏
  • 举报
回复
引用 6 楼 binsweet 的回复:
定时间隔回收System.GC.Collect(); 另外,如果允许的话,定时最小化,然后恢复,也能解决部分问题
这个感觉是治标不治本的. 关键还要优化代码,找出哪里占用资料的, 线程堆叠这种的,代码中避免掉再看现象
ajianchina 2015-08-05
  • 打赏
  • 举报
回复
我扫视了一下你的代码,觉得极可能堆叠
ajianchina 2015-08-05
  • 打赏
  • 举报
回复
你可以看一下是否出现线程堆叠,运行状态下窗口》线程,先确定确实因线程堆叠造成卡死,那么再对症下药。
失落的神庙 2015-08-05
  • 打赏
  • 举报
回复
引用 18 楼 ajianchina 的回复:
朋友,你出现了线程堆叠了,就是同一个线程出现了处理多个任务的情况,原因是你上一个任务还没结束,又循环进入了下一个任务。 采用子线程+委托,通过BeginInvoke方法来调用这个委托。
可以这样? lock(a) { continue;//继续循环 } return;退出 这样?
失落的神庙 2015-08-05
  • 打赏
  • 举报
回复
引用 18 楼 ajianchina 的回复:
朋友,你出现了线程堆叠了,就是同一个线程出现了处理多个任务的情况,原因是你上一个任务还没结束,又循环进入了下一个任务。 采用子线程+委托,通过BeginInvoke方法来调用这个委托。
是用的BeginInvoke 。怎么判断堆叠了? 是不是要用lock来实现?
加载更多回复(18)

111,088

社区成员

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

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

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