紧急求助!很急!关于DLL调用的问题!

zodiackiller 2012-11-05 10:57:05

[ComVisiable(true)]
public void GetInterface(string sXml)
{
Thread trInfo = new Thread(new ThreadStart(GetInfo)));
trInfo.Start();
//处理后面的事情
}
private void GetInfo()
{
//处理基本信息获取的线程
}


这段代码,我是封装成DLL,给VB6还有PB程序去调用的!

但是,很奇怪!一旦线程中的方法报了异常!那么,会导致调用方:VB6或者PB的程序,直接强制退出!请问,这个该怎么解决!我很急!
...全文
173 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zodiackiller 2012-11-05
  • 打赏
  • 举报
回复
引用 7 楼 wddw1986 的回复:
让对方提供抛异常的堆栈信息,先确认是哪的问题再说。 主程序是有能力把错误信息记下来的。
哎。。。对方的主程序是PB写的! 我们的DLL是写物资申请单用的! 线程里面,调用的是webservice的方法,去获取一些基础的数据! 但是,当客户给我们的服务器出现问题,导致服务无法调用时候! 此时,子线程就异常报错了! 虽然,已经加了try catch,而且show了一个messagebox,但是,客户的PB主程序,还是崩溃自动强制关闭了! 现在,投诉我们接口公司的DLL存在问题,导致,他们正常的工作无法进行! 百度了一大圈,仍然无解。。哎。。。。。。客户咬定是我们DLL的问题,草!什么年代了,还用PB!我真的想骂人啊!
cheng2005 2012-11-05
  • 打赏
  • 举报
回复
让对方提供抛异常的堆栈信息,先确认是哪的问题再说。 主程序是有能力把错误信息记下来的。
sweet_ 2012-11-05
  • 打赏
  • 举报
回复
引用 5 楼 zodiackiller 的回复:
引用 2 楼 haukwong 的回复:调用的时候try...catch一下呢? 或者是在线程中的方法里面try...catch一下,处理下异常。 已经用了,截获到异常后,我用messagebox把它show出来后,还没来得及点击确定按钮! 此时,用vb6,pb写的主程序自己就强行关闭,退出了! 导致,客户说我们的接口的DLL有问题,要投诉!我现在,真急死……
你这客户 真2 .程序难免都有错的..
zodiackiller 2012-11-05
  • 打赏
  • 举报
回复
引用 2 楼 haukwong 的回复:
调用的时候try...catch一下呢? 或者是在线程中的方法里面try...catch一下,处理下异常。
已经用了,截获到异常后,我用messagebox把它show出来后,还没来得及点击确定按钮! 此时,用vb6,pb写的主程序自己就强行关闭,退出了! 导致,客户说我们的接口的DLL有问题,要投诉!我现在,真急死了!
zodiackiller 2012-11-05
  • 打赏
  • 举报
回复
引用 3 楼 wddw1986 的回复:
子线程里面抛出的异常如果没处理,被抛到了堆栈的尽头,那就会造成进程出错退出,这个无解,所以需要你在子线程里适当的地方做好处理。虽然无法阻止程序退出,但是可以捕获到这个错误,加点日志,修正你的处理。
这个难道是无解的吗??我已经在子线程里面,加了try catch,并且,使用Messagebox把错误给show出来了! 但是,当我还未点击确认时候,外面主程序(vb6或者pb的程序)就自动强制关闭了!
cheng2005 2012-11-05
  • 打赏
  • 举报
回复
子线程里面抛出的异常如果没处理,被抛到了堆栈的尽头,那就会造成进程出错退出,这个无解,所以需要你在子线程里适当的地方做好处理。虽然无法阻止程序退出,但是可以捕获到这个错误,加点日志,修正你的处理。
Hauk 2012-11-05
  • 打赏
  • 举报
回复
调用的时候try...catch一下呢? 或者是在线程中的方法里面try...catch一下,处理下异常。
  • 打赏
  • 举报
回复
你应该在可能出现异常的地方捕获一下,然后处理,不然程序遇到异常就会自动关闭
zodiackiller 2012-11-05
  • 打赏
  • 举报
回复
谢谢,大家,结贴了。。。这个等领导意思了。。真麻烦。。烦烦烦烦
江湖评谈 2012-11-05
  • 打赏
  • 举报
回复
一个托管一个非托管 借助托管工具转换非托管在调用此COM试试看 另如果Thread实例在win7以及前面的系统都是不可用的,报错很正常。
cheng2005 2012-11-05
  • 打赏
  • 举报
回复
记日志而不是弹什么MessageBox , 你怎么知道MessageBox 一定可以弹出来?人家要是用个命令行窗口怎么办?要是服务怎么办?写底层的人不要去依赖上层的设计。
Saleayas 2012-11-05
  • 打赏
  • 举报
回复
但是,当客户给我们的服务器出现问题,导致服务无法调用时候! 既然服务器是客户给的,就让他们先换好服务器。 而且,一个完整的程序需要有自己处理异常的能力。 就算你们的 DLL 有问题,抛出异常后,他们的程序也应该有处理的能力。 不过最终还是要看你们的老板,因为客户对你来说不是直接上司。 所以解释技术问题也许没用。 还有,就是看看你在你的 DLL 中有没有调用他们提供的接口。 同时,把你的 MessageBox 这类会导致呼叫延时的东东去掉。

110,571

社区成员

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

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

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