我正在编写一个自定义调度程序,因此我想触发任何注册为在当前时间运行的任务,而不会花费太多时间以至于调度程序错过下一个时间段。因此,我创建了一个线程,该线程会一直休眠到下一个预定事件,然后它会唤醒并运行下一个或多个事件,然后再次休眠。任务在后台作为进程运行,因此我可以设置它们并尽快将它们关闭。为了便于控制进程的日志记录,我保留了一个内部任务队列,在唤醒时我会在启动进程时消耗这些任务,但我还希望有一个 EventHandler 可以通过注册多长时间来完成该任务的日志记录它花了,一旦它退出它是失败还是成功。
因为我使用 Process.Process() 类在后台执行任务,所以无法(我可以看到)将我的唯一任务引用传递给处理程序,因此我可以正确完成日志记录。我正在设置我的处理程序,如下面的代码。
pTask = new Process();
pTask.Exited += new EventHandler(pTask_Exited);
我故意在标题中使用了“搭载”一词,因为在我的研究中,我遇到了一个类似的问题,该问题吸引了一个答案,即如果您需要搭载 EventArgs 上的数据,那么您的设计就有缺陷。我可以接受我的设计可能有缺陷,但无法找到关于如何以不同方式更有效地设计它的启示。任何指导表示赞赏。