类库中的System.Threading.ThreadAbortException

时间:2014-07-28 10:17:31

标签: wpf multithreading exception

我有一个wpf应用程序,它将每次调用类库作为插件来连接wcf服务。在类库中调用服务方法时,它将给出上述异常。并且异常消息是 er = {Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack.}即使堆栈跟踪也有上述消息。解决方案是什么?

1 个答案:

答案 0 :(得分:1)

我只是在这里猜测,因为你没有提供太多代码。但是在主应用程序中,请确保添加以下事件处理程序;

DispatcherUnhandledException
AppDomain.CurrentDomain.UnhandledException
TaskScheduler.UnobservedTaskException

此线程中也有记载:

http://stackoverflow.com/questions/1472498/wpf-global-exception-handler

使用Log4net之类的东西记录您的异常。关于WCF,所有调用应该包含在try catch块中。

如果您的错误与WCF相关,您可以使用您服务的app.config文件并添加以下配置:

<system.diagnostics>
<sources>
  <source name="System.ServiceModel"
          switchValue="Information, ActivityTracing"
          propagateActivity="true" >
    <listeners>
      <add name="xml"/>
    </listeners>
  </source>
  <source name="System.ServiceModel.MessageLogging">
    <listeners>
      <add name="xml"/>
    </listeners>
  </source>
  <source name="myUserTraceSource"
          switchValue="Information, ActivityTracing">
    <listeners>
      <add name="xml"/>
    </listeners>
  </source>
</sources>
<sharedListeners>
  <add name="xml"
       type="System.Diagnostics.XmlWriterTraceListener"
       initializeData="c:\temp\wcf.svclog" />
  </sharedListeners>

这会将所有WCF活动记录到c:\ temp \ wcf.svclog,您可以使用位于win sdk目录中的工具SvcTraceViewer.exe查看该活动。

希望有所帮助

了Stian