1

我在 .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 回调, 对象状态, bool preserveSyncCtx) + 0x285 字节 mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback 回调,对象状态,bool preserveSyncCtx) + 0x9 字节
mscorlib.dll!System.Threading.QueueUserWorkItemCallback.System。 Threading.IThreadPoolWorkItem.ExecuteWorkItem() + 0x6f 字节 mscorlib.dll!System.Threading.ThreadPoolWorkQueue.Dispatch() + 0x1ea 字节
[本机到托管转换]
[Appdomain 转换]
[本机到托管转换]

4

2 回答 2

1

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

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

于 2014-01-31T22:30:48.673 回答
0

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

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

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

于 2015-06-03T20:20:05.620 回答