程序假死的原因,高分求解

mizuho_2006 2012-07-10 09:09:22




如上图。。。


我在program.cs里加入了记录无法处理异常的代码,但是没有记录任何日志

        static Program()
{
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
}

static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
string strException = string.Format("{0}发生系统异常。\r\n{1}\r\n\r\n\r\n", DateTime.Now, e.ExceptionObject.ToString());
File.AppendAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SystemException.log"), strException);
}



...全文
417 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kogeo_Guan 2012-07-10
  • 打赏
  • 举报
回复
帮 mizuho_2006 大哥顶1下。
mizuho_2006 2012-07-10
  • 打赏
  • 举报
回复
顶一下。。。
mizuho_2006 2012-07-10
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]
是不是电脑配置不行,没显示完全
[/Quote]

配置挺好的。一个月都没出现过这种问题。
ohkuy 2012-07-10
  • 打赏
  • 举报
回复
是不是电脑配置不行,没显示完全
代码小天王 2012-07-10
  • 打赏
  • 举报
回复
敢不敢进行单步调试
[Quote=引用 13 楼 的回复:]

引用 12 楼 的回复:
在一些可能出现问题的地方,加上日志记录以帮助分析


加了很多错误日志,还在program.cs里加了对无法处理异常的记录日志。但都没有捕获到。
[/Quote]
mizuho_2006 2012-07-10
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]
在一些可能出现问题的地方,加上日志记录以帮助分析
[/Quote]

加了很多错误日志,还在program.cs里加了对无法处理异常的记录日志。但都没有捕获到。
dd_zhouqian 2012-07-10
  • 打赏
  • 举报
回复
在一些可能出现问题的地方,加上日志记录以帮助分析
mizuho_2006 2012-07-10
  • 打赏
  • 举报
回复
检查了一下,程序里只有一个地方使用了lock关键字,是为了防止执行这段代码时全局变量值被别的代码更改

但只有一个线程会访问到这段代码,另一个线程不会执行这段代码,应该不会线程死锁吧
Kogeo_Guan 2012-07-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

一个月才遇到一次这种情况。。。怎么单步调试

为什么捕获不到异常呢
[/Quote]

请问 winform 也会有 缓存 的么??
mizuho_2006 2012-07-10
  • 打赏
  • 举报
回复
程序里有些地方我使用了lock(this)
是不是只要线程访问的资源都最好lock一下呢?
代码小天王 2012-07-10
  • 打赏
  • 举报
回复
死锁就是两个人互相喜欢,你在等他表白,她在等你表白
[Quote=引用 5 楼 的回复:]

引用 3 楼 的回复:
该不会是线程死锁


线程死锁是什么原因造成的。我程序里就开了2个线程。
[/Quote]
熙风 2012-07-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

引用 3 楼 的回复:
该不会是线程死锁


线程死锁是什么原因造成的。我程序里就开了2个线程。
[/Quote]

那就是线程的原因

http://www.bianceng.cn/Programming/csharp/201107/27675.htm
bdmh 2012-07-10
  • 打赏
  • 举报
回复
代码写的有问题,让我猜谜语呢
mizuho_2006 2012-07-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
该不会是线程死锁
[/Quote]

线程死锁是什么原因造成的。我程序里就开了2个线程。
mizuho_2006 2012-07-10
  • 打赏
  • 举报
回复
一个月才遇到一次这种情况。。。怎么单步调试

为什么捕获不到异常呢
梦里独赏花 2012-07-10
  • 打赏
  • 举报
回复
该不会是线程死锁
popo0762 2012-07-10
  • 打赏
  • 举报
回复
单步调试,看看在哪里卡住的
熙风 2012-07-10
  • 打赏
  • 举报
回复
你可以单步调试看下原因,,
你贴上面的代码根本没用,,
mizuho_2006 2012-07-10
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 的回复:]
程序出现假死状况 很有可能是因为你在某个地方取数据比较耗时,然后你的主线程就一直在那里等着结果回来,建议可以讲取数据的地方放到线程里边去 这样主线程就不至于卡死在那里等着 这样用户体验也会好很多 不至于让用户觉得很卡
[/Quote]

现在不是卡,而是什么都没有了。。。要是卡点还好说。。
mizuho_2006 2012-07-10
  • 打赏
  • 举报
回复
我程序里还用了2个线程定时器(System.Threading.Timer),是不是也会造成线程死锁?

有个线程定时器和另外一个线程里都调用了DisplaySendString方法,用来显示字符串到RichTextBox中,会不会造成线程死锁呢?
加载更多回复(3)

110,566

社区成员

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

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

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