如何解决:应用程序出现严重错误,需要被关闭???

lmxmx 2011-06-22 09:57:00
我在VS2008中有一个C#程序,该程序是个后台程序,不需要处理消息,因此就只有Program.cs类。
程序中没有使用任何Form类,所以也没有使用Application的Run()方法。

现在的问题是,程序在运行时会出现“应用程序xxx.exe出现严重错误,必须被关闭”的对话框。
而且错误出现是随机的,不知道什么时候就会出现该错误提示。
在程序中使用try{}catch{}也抓不到任何异常。

该项目使用了一个第三方的DLL文件,会不会是这个DLL的问题?
如果DLL中出现了错误,我的EXE中可不可以用try{}catch{}处理DLL中的异常?

各位路过的高人指点几句吧,谢谢啦!
...全文
1906 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ycproc 2011-06-23
  • 打赏
  • 举报
回复
应当是代码的错误 不见得是dll的

是程序的内部处理问题

你走调试 别直接运行
mzssky 2011-06-23
  • 打赏
  • 举报
回复
路过,帮顶~~
lmxmx 2011-06-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 fengyarongaa 的回复:]
应当是代码的错误 不见得是dll的

是程序的内部处理问题

你走调试 别直接运行
[/Quote]

调试时,我在dll回调的函数开头下断点,也就是说只有这个断点命中,才意味着从dll进入到我的代码中,但是现在该断点还未命中时,就已经报错了。

而且这个错误是随机出现的,头时候调用200多次也不会出错,我不可能一直单步调试啊……
threenewbee 2011-06-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xuexiaodong2009 的回复:]
引用 2 楼 caozhy 的回复:

是dll出现的错误,或你调用出错。
因为dll的内存分配不是CLR管理的,一旦存在问题,必然崩溃。
同意,调用第三方的都要try{}catch{},否则责任是谁的?
[/Quote]
try{}catch{}也没用。。。
xuexiaodong2009 2011-06-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 caozhy 的回复:]

是dll出现的错误,或你调用出错。
因为dll的内存分配不是CLR管理的,一旦存在问题,必然崩溃。
[/Quote]同意,调用第三方的都要try{}catch{},否则责任是谁的?
threenewbee 2011-06-22
  • 打赏
  • 举报
回复
是dll出现的错误,或你调用出错。
因为dll的内存分配不是CLR管理的,一旦存在问题,必然崩溃。
龍月 2011-06-22
  • 打赏
  • 举报
回复
把 Program 源码贴出来
三方dll 是干什么用的》?

lmxmx 2011-06-22
  • 打赏
  • 举报
回复
各位大大,对于这种问题,到底应该如何调试啊?

dll没有源代码,只有程序文件。
lmxmx 2011-06-22
  • 打赏
  • 举报
回复
另外:
DLL也是C#语言写的,提供了一个叫做Station类,设置事件处理函数之后调用Open()方法打开,他会创建一个监听线程来监控进程间的数据传递。如果dll接收到数据,就会在监听线程上调用事件处理函。

有点像SerialPort类
lmxmx 2011-06-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ly_longyue 的回复:]
把 Program 源码贴出来
三方dll 是干什么用的》?
[/Quote]

1. dll文件是用来和前台程序进行进程间通讯的,加载之后需要传一个委托进去,
当前后台之间有数据时dll的监听线程就会执行委托,将数据考到我的主线程来处理。

2. Program的代码老长了……
主要是有一个循环不断的查收事件,如果无数据就Threading.Sleep(0),有数据就处理数据。

110,533

社区成员

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

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

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