【发布时间】:2010-11-28 11:41:14
【问题描述】:
嗨
有没有办法编写一个记录器,可以记录另一个用 c# 编写的程序中发生的异常?
【问题讨论】:
嗨
有没有办法编写一个记录器,可以记录另一个用 c# 编写的程序中发生的异常?
【问题讨论】:
是的,但这并不容易。
如果您在当前应用程序的AppDomain 中运行该应用程序,则相对容易。您所做的是属于该域,您附加到 UnhandledException 事件处理程序并以这种方式注册异常。
但是,我怀疑您所指的 C# 应用程序在不同的进程中运行。在这种情况下,您仍然使用大致相同的机制,但实际上要获得AppDomain 要困难得多。这涉及托管 C++ 和在远程域中执行线程。您可以查看Can I inject a thread in a remote app domain from C# 和http://social.msdn.microsoft.com/Forums/en/winforms/thread/e4cfa5dd-e254-4088-8754-09dc40d4fb5b 了解更多信息。
【讨论】:
异常是一种严格存在于进程中的机制,所以不是。
【讨论】:
发生异常时,您可以将异常详细信息发送到另一个负责记录异常的应用程序。您可以使用多种远程过程调用机制中的一种,例如可能使用 Web 服务或 Windows Communication Foundation (WCF)。
这是Error Handling Extensions in WCF 的一个很好的例子。
【讨论】: