- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我以一种非常可控的方式将作业排在 ProcessJobManager
中。这将一次最多在 X 个并发进程中处理它们。
启动每个进程后,我将其添加到 List<ActiveProcessJob>
并存储一个 WaitHandle
对于我的流程 ActiveProcessJob
的 CompleteEvent
通过构建 new ManualResetEvent( false )
的属性并分配其 SafeWaitHandle
属性(property)到new SafeWaitHandle( my_process.Handle, false )
.
我通过以下代码等待进程完成(以及任何“new_jobs_queued”):
WaitHandle[] wait_handles =
active_jobs
.Select<ActiveProcessJob,WaitHandle>( j => j.CompleteEvent )
.Union( new WaitHandle[]{ new_jobs_queued} ).ToArray();
WaitHandle.WaitAny( wait_handles );
Process.BeginOutputReadLine
确保
Process.OutputDataReceived
事件被触发。
active_jobs
事件的事件处理程序最后一次触发之前从
Process.OutputDataReceived
列表中删除。在这种情况下,处理程序不能引用进程因为它已经从队列中删除了。
OutputDataReceived
事件,它显然在与我的
WaitAny
不同的线程上运行等待进程终止的调用。
最佳答案
由于重定向的输出流在与处理进程终止信号的线程不同的线程中运行,并且没有其他方式与之同步,因此处理终止信号的线程可能会在处理进程终止信号的线程之前执行其所有工作标准输出事件运行或结束。
Process.Exit 不能保证在所有输出事件完成之前运行,可能是由于疏忽,它在调用 RaiseOnExited 之前不等待流结束,除非您调用 Process.WaitForExit,这是我确定的使用 .NET Reflector 反编译代码。
更新:我实际上在 documentation 中发现了这一点。 ,这似乎建议您必须两次调用 WaitForExit 以确保它完成:
"When standard output has been redirected to asynchronous event handlers, it is possible that output processing will not have completed when this method returns. To ensure that asynchronous event handling has been completed, call the WaitForExit() overload that takes no parameter after receiving a true from this overload."
关于.net - 如何避免进程终止通知和标准输出重定向事件之间的竞争条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16095292/
假设我正在使用 APC,其中过程和调用代码都使用 SetLastError 和 GetLastError。这会导致 GetLastError 产生不可预测的值。有什么办法可以解决这个问题吗? VOID
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 7年前关闭。 Improve t
任何人都可以,请告诉我,如何在不进行JavaScript轮询/ setInterval的情况下,在完整日历上填充/显示在服务器端动态更新的数据。 grails中提供了Atmosphere插件,但是文档
我正在尝试调整我的代码,从仅在前台使用 WCSessionDelegate 回调到在后台通过 handleBackgroundTasks: 接受 WKWatchConnectivityRefreshB
我正在构建批处理系统。 单位 的批处理数量从 20 到 1000 不等。每个 Unit 本质上都是模型的层次结构(一个主模型和许多子模型)。我的任务涉及将每个模型层次结构作为单个事务保存到数据库中(每
我拍了一张图片并将其切成三 block ,然后将它们向右浮动,让文字围绕它们流动。 HTML 看起来像这样: 在我添加侧边栏并将其 float 到图像的右上方之前,它工作正常,就像这样... T
我正在考虑嵌入式 Linux 项目(还没有硬件)中即将出现的情况,其中两个外部芯片需要共享一条物理 IRQ 线。这条线在硬件中能够实现边沿触发,但不能实现电平触发中断。 查看 Linux 中的共享 i
我观察到,当 linux futexes 发生争用时,系统会在自旋锁上花费大量时间。我注意到即使不直接使用 futex 也是一个问题,但在调用 malloc/free、rand、glib 互斥调用和其
我终于能够获得一些工具提示,最终可以使用以下代码: Hover over me 然后 $('[rel=tooltip]').tooltip(); 我遇到的问题是它使用 jQueryUI 工
我是一名优秀的程序员,十分优秀!