2013-06-06 5 views
0

UI 스레드에서 많은 작업을 수행해야합니다. 이 작업은 많은 CPU 및 메모리 리소스를 소모합니다. 현재 구현에서는 Dispatcher.BeginInvoke() 메서드를 사용하지만 응용 프로그램을 고정시킵니다.하위 프로세스에 작업을 위임하는 가장 좋은 방법은 무엇입니까?

이 작업을 GUI없이 하위 프로세스에 위임하면 어떻게 될까요? 주 프로세스는 하위 프로세스를 실행합니다. 주 응용 프로그램이 하위 프로세스에 명령을 보내면 자식 프로세스는 작업을 수행하고 호스트 프로세스에 결과 개체를 반환합니다.

호스트와 하위 프로세스 간의 통신 방법은 무엇입니까? .NET Remoting (마샬링)에 대해서는 알고 있지만 쓸모없는 메소드 (또는 아닐까요?).

내 영어 실력에 감사드립니다.

+0

당신은 솔루션으로 BackgroundWorker에 봤어? 물론 – Jordy

+0

입니다. 문제는 GUI 스레드에서 많은 작업이 필요하다는 것입니다. 그것은 백그라운드 스레드에서 수행 할 수 없습니다 – Dmitriy

+0

우리는 여기서 어떤 종류의 작업을하고 있습니까? 그리고 왜 GUI 스레드에서 발생해야합니까? – Jordy

답변

0

양방향 WCF 파이프로 인해 상위 프로세스와 하위 프로세스가 모니터되는 하위 프로세스 관리 라이브러리를 만들었습니다. 자식 프로세스가 종료되거나 부모 프로세스가 종료되면 서로에게 통지됩니다. VS 디버거를 시작된 하위 프로세스에 자동으로 연결하는 디버거 도우미가 있습니다.

프로세스간에 확장 가능한 통신 인프라가 있습니다. WCF 지식이 필요 없습니다.

프로젝트 사이트 :

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

NuGet 패키지는 :

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