【问题标题】:System.Threading.ThreadAbortException in classlibrary类库中的 System.Threading.ThreadAbortException
【发布时间】:2014-07-28 10:17:30
【问题描述】:

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

【问题讨论】:

  • 找出谁在中止线程并让他们停止。中止线程几乎从来都不是一个好主意。
  • 我没有中止程序中的任何线程。它会自动中止。
  • 是的,找出是什么组件做了这个以及为什么。将调试器设置为中断所有异常并查看该异常的来源。
  • 投票关闭,因为这里没有找到此错误原因的信息。添加任何必需的信息并重新打开。

标签: wpf multithreading exception


【解决方案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 查看。

希望对你有帮助

斯蒂安

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    • 2010-12-27
    • 1970-01-01
    • 2013-12-05
    相关资源
    最近更新 更多