工作线程丢失的错误信息

时间:2011-06-17 15:16:55

标签: c# .net multithreading exception-handling backgroundworker

我想了解为什么会发生以下行为以及实现我需要的任何方法。

我有一个主线程,它会让一个backgorund工作人员进行一些处理。我有一个后台工作者完成甚至处理程序,我听到任何错误。当出现错误时,我抛出错误并允许它浮动回主线程。我不想处理错误并显示来自后台工作者的任何消息。

但是当错误最终被困在主线程中时,我没有看到实际的错误消息,但是我得到了'目标调用未知'错误。想了解为什么以及任何方式来做这种情况。

评论: 添加了源代码示例。由于此逻辑在WCF服务方案中编码,因此添加了WCF的原因。希望现在更有意义。

 class ParentClass
    {
        static void main()
        {
            try
            {
                Thread t = new Thread(new ThreadStart(M1));
                t.Start();
                // ...
                // ...
            }
            catch
            {
                // here I dont see the error as 'date time conversion' 
                // but see a generic error as I mentioned
            }
        }

        static void M1()
        {
            try
            {
                Convert.ToDateTime("sss");
            }
            catch (Exception e)
            {
                // Here I see the error as 'error in date time conversion'
               throw; 
            }
        }
    }

谢谢, 摩尼

1 个答案:

答案 0 :(得分:0)

在不查看代码的情况下,很难猜测您是如何传递异常的,但是您是否检查了您收到的Exception的InnerException属性。它可能包含您要查找的信息。如果没有信息,可能是捕获异常并“浮动”它的代码本身可能会产生错误。