【问题标题】:Best way to delegate work to child process?将工作委派给子进程的最佳方式?
【发布时间】:2013-06-06 11:04:02
【问题描述】:

我需要在 UI 线程中做很多工作。这项工作会消耗大量的 CPU 和内存资源。在当前实现中,我使用 Dispatcher.BeginInvoke() 方法,但它使我的应用程序冻结。

如果我将这项工作委托给没有 GUI 的子进程怎么办?主进程运行子进程。主应用程序向子进程发送一些命令后,子进程做一些工作并将结果对象返回给主机进程?

如何在主机和子进程之间进行通信?我知道 .NET 远程处理(编组),但它是过时的方法(或不是?)。

感谢和抱歉我的英语不好。

【问题讨论】:

  • 您是否将后台工作人员视为解决方案?
  • 当然。问题是我需要在 GUI 线程中做很多工作。它不能在后台线程中完成
  • 我们在这里谈论什么样的工作?为什么要在 GUI 线程中进行?
  • 使用线程,一个进程只会给你两个问题。 This answer 展示了如何。

标签: c# remoting .net-remoting


【解决方案1】:

我制作了一个子进程管理库,其中父进程和子进程通过双向 WCF 管道进行监控。如果子进程终止或父进程相互终止,则会收到通知。 还有一个调试器助手可用,它会自动将 VS 调试器附加到启动的子进程

您在进程之间拥有可扩展的通信基础架构。无需 WCF 知识。

项目地点:

http://www.crawler-lib.net/child-processes

NuGet 包:

https://www.nuget.org/packages/ChildProcesses https://www.nuget.org/packages/ChildProcesses.VisualStudioDebug/

【讨论】:

    猜你喜欢
    • 2011-11-04
    • 2016-05-18
    • 1970-01-01
    • 2013-12-05
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    • 2014-01-09
    相关资源
    最近更新 更多