【问题标题】:Error info lost from worker thread工作线程中的错误信息丢失
【发布时间】:2011-06-17 15:16:54
【问题描述】:

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

我有一个主线程,它会派出一个后台工作人员来进行一些处理。我有一个后台工作人员完成了偶数处理程序,我在其中监听任何错误。当出现错误时,我会抛出错误并让它浮回主线程。我不想处理错误并显示来自后台工作人员的任何消息。

但是当错误最终被困在主线程中时,我看不到实际的错误消息,但我收到了“目标调用未知”错误。想了解为什么以及如何处理这种情况。

评论: 根据要求添加了源代码示例。添加 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; 
            }
        }
    }

谢谢, 玛尼

【问题讨论】:

  • 您究竟是如何将异常“浮动”到主线程的?
  • WCF 在哪里混在一起?
  • 只需几行就可以使这个问题(和答案)变得更好。
  • @Henk 是的,我们真的需要一个“向我们展示代码”按钮

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    • 2016-07-03
    • 1970-01-01
    相关资源
    最近更新 更多