FM.dll中发生System.Exception类型的未处理异常

时间:2014-01-31 22:12:42

标签: c# multithreading websync

我在.NET应用程序中使用WebSync,其中客户端正在调用连接,订阅等WebSync。在执行代码的某个地方(这是一个很大的应用程序),我得到灰色框弹出窗口,上面显示上面的错误消息。因为这是一个很大的应用程序,我怎样才能找到应用程序中的哪个位置?问题是这个应用程序有很多线程。

此消息是否表示FM.dll(WebSync)存在问题,或者是否意味着我在代码中遗漏了应该捕获此异常的内容。如果是后者,我如何找到代码中可能出现的位置?

谢谢!

这是我的错误的调用堆栈。我如何判断这是我的错误还是问题是在FM.dll(WebSync)中?

  

FM.dll!FM.AsyncException.AsyncThrow.AnonymousMethod__0(未使用的对象)+ 0x47字节
      mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext,System.Threading.ContextCallback callback,object state,bool preserveSyncCtx)+ 0x285 bytes       mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext,System.Threading.ContextCallback callback,object state,bool preserveSyncCtx)+ 0x9 bytes
      mscorlib.dll!System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()+ 0x6f bytes       mscorlib.dll!System.Threading.ThreadPoolWorkQueue.Dispatch()+ 0x1ea bytes
      [原产于管理过渡]
      [Appdomain Transition]
      [原生于管理过渡]

2 个答案:

答案 0 :(得分:1)

如果您打开了“Break on All Exceptions”,那么一旦启动调试器,当抛出异常时,您将能够查看并导航堆栈跟踪。这应该可以让您了解代码导致异常的路径。您还可以询问异常以检查是否已设置InnerException属性。根据该信息,您应该能够确定导致问题的原因。如果没有从您收集的信息中发布更多详细信息,您可以获得更多帮助。

设置Visual Studio以打破所有异常的说明:http://msdn.microsoft.com/en-us/library/d14azbfh.aspx

答案 1 :(得分:0)

在FM库中,在异步回调中抛出异常时使用AsyncException.AsyncThrow。尝试将您的FM回调代码包装在try / catch块中以捕获异常,例如:

client.Connect(new ConnectArgs
{
    OnSuccess = (e) =>
    {
        try
        {
            // your code
        }
        catch (Exception ex)
        {
            // handle exception
        }
    }
});

如果你没有将你的回调代码包装在try / catch块中,那么FM库会将异常推送到一个线程,在那里它会大声失败而不是吞下/隐藏它。