代码之家  ›  专栏  ›  技术社区  ›  mackenir

钩线出口

  •  0
  • mackenir  · 技术社区  · 17 年前

    有没有一种方法可以让我钩住托管线程的出口(即,在线程出口之前在线程上运行一些代码?)

    我已经开发了一种机制来钩住线程出口,这对 一些

    例如,这个机制适用于我使用Thread类在代码中创建的工作线程。

    但是,它似乎不适用于应用程序的主线程(无论是控制台还是windows应用程序)。“hook”COM对象似乎在关闭过程中删除得太晚,调用委托的尝试失败。

    (我想实现这个功能的原因是,我可以在“太晚”之前(即在线程退出之前,并且在该线程上无法再使用STA COM对象之前),在现有线程上运行一些与在该线程上创建的STA COM对象一起工作的本机COM代码。)

    1 回复  |  直到 17 年前
        1
  •  0
  •   Eamon Nerbonne    17 年前

    你控制线程创建吗?简单地将线程的代码包装在try…finally子句中,并将代码放入finally子句中可能是最简单的方法。

    请注意,当AppDomain关闭时,您永远无法确定是否会调用您的代码,因为关闭可能不太正常。

    当你说“析构函数”时,我想你指的是一个C++/CLI析构函数,即.Dispose()方法?

    AppDomain.CurrentDomain.ProcessExit 事件-在未处理的异常上似乎不会触发,或者 AppDomain.CurrentDomain.UnhandledException