线程就绪和已完成的事件

我有一些代码需要在每个线程中执行(无论它是如何产生的),在线程开始执行代码之前和执行完成之后在特定应用程序域中运行。 我发现System.ComponentModel.BackgroundWorker类的事件与我需要的第二个事件相同(参见表格)。 ┌───────────┬────────────────────────┬──────────── ────────────────────────────────────────────────── ───────────┐ │? class│DackgroundWorker类│描述│ ├───────────┼────────────────────────┼──────────── ────────────────────────────────────────────────── ───────────┤ │准备│ - │操作执行即将开始。 │ ├───────────┼────────────────────────┼──────────── ────────────────────────────────────────────────── ───────────┤ │? │DoWork│执行操作。 │ ├───────────┼────────────────────────┼──────────── ────────────────────────────────────────────────── ───────────┤ │? │ProgressChanged│通知执行操作的进度。 │ ├───────────┼────────────────────────┼──────────── ────────────────────────────────────────────────── ───────────┤ │已完成│RunWorkerCompleted│操作已完成,已取消或已引发异常。 │ └───────────┴────────────────────────┴──────────── ────────────────────────────────────────────────── ───────────┘ 上表中是否有Ready和Completed等事件?我没有在System.Threading.Thread和System.AppDomain类上看到这样的事件。     
已邀请:
有许多不同的方法来启动新线程。线程池不仅用于
QueueUserWorkItem
BackgroundWorker
,还用于执行异步委托调用的任何代码。此外,
Begin...
End...
方法用于执行异常操作,如
Stream.BeginRead
Stream.EndRead
开始和结束线程。当然,使用托管线程时有标准
Thread.Start()
。然后是任务并行库。 。 。 当然,有很多方法可以直接使用Windows API启动线程。 即使您忽略了Windows API的可能性,您仍然要求挂钩许多不同的机制,以便您可以监视活动。您必须挂钩托管线程函数以及启动和关闭工作项的线程池函数。 如果没有对运行时库进行严重的探讨并在非托管代码中执行各种令人讨厌的未记录的事情,则可能无法解决此问题。即便如此,我也不相信它可以做到。你需要的钩子不暴露。 如果你想包含Windows API的可能性......好吧,祝你好运。     
如果我理解正确,您需要在DoWork开始时/之前举办活动。 事件模型不提供此功能,因为您可以轻松调用方法 就在RunWorkerAsync之前,来自调用线程 从工作线程开始的DoWork开始。 所以没有这种事件的明显案例。     

要回复问题请先登录注册