WPF程序,运行时偶尔会出现窗体无响应,大家都是怎样排查原因和解决的?

APM60- 2012-07-20 10:11:42
WPF程序,运行时偶尔会出现窗体无响应。
大家都是怎样排查和解决的?

win7下:
XX未响应
尝试还原此程序
关闭程序
等待程序响应

对窗体进行操作时,不一定什么时候会出现,而且是偶尔出现。
找不出具体是哪里的原因。
大家遇到类似情况有什么好方法没?

还有,可否让窗体未响应时默认选择“尝试还原此程序”呢?
...全文
1254 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mr_graceless 2012-07-20
  • 打赏
  • 举报
回复
WPF怎么垃圾了。。我们公司已经用WPF三年了,实施了无数的项目,感觉挺好用啊
足球中国 2012-07-20
  • 打赏
  • 举报
回复
WPF,LING已经被批的垃圾不能再垃圾的程序了。为什么还要用?
StarlightHan 2012-07-20
  • 打赏
  • 举报
回复
可能是你那个获取天气的请求地址服务器速度太慢,或者是无法获取的请求数据在请求等待中
优化你的请求逻辑,减少队请求资源的占用等
sky2008444 2012-07-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
用异步方式,其目标就是不让这段内容在主线程(UI Thread)中进行
可以考虑几个方法,
1. new Thread
2. BackgroundWorker

完成后BeginInvoke/Invoke回主线程更新UI内容
[/Quote]

+1
目测是因为Stream的长度比较长,或者时常需要读Stream,所以造成有时候死机的问题。推荐使用多线程解决,可以避免阻塞主线程,也就不会出现死机的现象了。
ckl881003 2012-07-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

用异步方式,其目标就是不让这段内容在主线程(UI Thread)中进行
可以考虑几个方法,
1. new Thread
2. BackgroundWorker

完成后BeginInvoke/Invoke回主线程更新UI内容
[/Quote]
+1
应该用多线程可以有效避免ui卡机等情况发生
nonocast 2012-07-20
  • 打赏
  • 举报
回复
用异步方式,其目标就是不让这段内容在主线程(UI Thread)中进行
可以考虑几个方法,
1. new Thread
2. BackgroundWorker

完成后BeginInvoke/Invoke回主线程更新UI内容
APM60- 2012-07-20
  • 打赏
  • 举报
回复
无响应时停到了下面的第4句。

WebClient WebClientWeather = new WebClient();
Stream streamWeather = WebClientWeather.OpenRead("http://m.weather.com.cn/data/101120301.html");
StreamReader StreamReaderWeather = new StreamReader(streamWeather);
string strWeather = StreamReaderWeather.ReadToEnd();

我这里用了定时器定时获取天气。
可能是长时间取不到网页返回信息引起的。
虽然也用了try catch,可能这里还是等了一段时间。
就像是浏览器等半天打不开某个页面那样。

总之,先把这一段去掉再试试。
APM60- 2012-07-20
  • 打赏
  • 举报
回复
感谢回复!

我再试一下。
iyomumx 2012-07-20
  • 打赏
  • 举报
回复
开调试一直跑,出现问题暂停下。调试一跑就n个小时不是很正常吗
ckl881003 2012-07-20
  • 打赏
  • 举报
回复
你就调试着呗,等到没响应了暂停一下,看看运行到哪里了,还有你的程序处理部分和UI分开了没?
Mr_graceless 2012-07-20
  • 打赏
  • 举报
回复
一个操作内处理很多任务时会出现,我的解决办法就是不一次性完成很多功能
APM60- 2012-07-20
  • 打赏
  • 举报
回复
把查询天气功能关了,好长时间不出现未响应了。
貌似是这里的原因。

准备用#6的方法改写下天气模块。
查资料中……
有没有这方面的实例或者链接?

结贴给分先~

可惜只能放100分。

另,我有2个之前老帖子现在0回复,造成结贴不能。
http://topic.csdn.net/u/20120412/13/42d9f1ff-4171-49b5-8f20-2df0c3645b0a.html
http://topic.csdn.net/u/20120612/14/760ff30f-d4a0-40cb-9ea3-1f745e8eb43a.html
望有热心人士进来回复下。有回复的话,这2个帖子将在近期内散分结贴。
机器人 2012-07-20
  • 打赏
  • 举报
回复
显然应该用异步处理。 比如 DonwloadStringAsync 这样的方法。

110,566

社区成员

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

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

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