Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# System类型的未处理异常。FM.dll中发生异常_C#_Multithreading_Websync - Fatal编程技术网

C# System类型的未处理异常。FM.dll中发生异常

C# System类型的未处理异常。FM.dll中发生异常,c#,multithreading,websync,C#,Multithreading,Websync,我在一个.NET应用程序中使用WebSync,在这个应用程序中,客户端调用WebSync来连接、订阅等。在代码执行过程中的某个地方(这是一个大应用程序),我会看到一个灰色的弹出框,上面显示了错误消息。因为这是一个大的应用程序,我如何在应用程序中找到发生这种情况的位置?问题是这个应用程序有很多线程 此消息是否意味着FM.dll(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回调,对象状态,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转换]
[本机到托管转换]


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


有关设置Visual Studio以中断所有异常的说明:

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

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

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

您是否尝试过调试该应用程序?我认为我们这里没有足够的信息来帮助您。我尝试过调试,但当我按F5继续时,我感到困惑,我注意到其他线程正在发挥作用。很难最终达到出现上述错误的程度。我试过乔希的建议。我将发布调用堆栈。我添加了调用堆栈,但其中没有显示我的代码。这里有一些转换。你说的转换是什么意思?如果你看一下我添加的调用堆栈,有几行写着“本机到托管转换”。我已经出城了,雷,很抱歉耽搁了。问题似乎在FM.dll中。最简单的解决方案是获取FM.dll的源项目,将其包含在开发项目中,然后从那里进行调试。这样,您可以在导致异常的确切行上中断。