2011-01-04 2 views
0

backgroundWorker 및 스레드 풀을 사용하여 실행되는 MyCommand C# 클래스가 있습니다. MyCommand는 Process 클래스를 사용하여 실행 가능한 명령 행을 실행합니다. MyCommand의 인스턴스는 각각 자체 스레드에 있으며 병렬 대신 직렬 방식으로 실행됩니다. MyCommand의 Process.Start() 실행이 다른 스레드를 차단하는지 궁금합니다.C# Multiple Simultaneous System.Diagnostics.Process

+0

치명적인 예외를 초래할 수있는 이러한 장기 실행 프로세스가 있습니까? 그렇지 않다면 나는 과정을 밟지 않을 것이다. MSDN에서 Task Parallel Library를 확인하십시오. – IAbstract

+1

코드에 문제가 있습니다. 그러나 코드를 보지 않고서는 무엇이 잘못되었는지를 알 수 없습니다. –

+0

이 과정에서 파일을 해독하는 실행 파일을 실행하여 각 스레드가 다른 파일의 암호를 해독합니다. 암호 해독 프로그램이 완료되었습니다. 출력을 인쇄하고 있습니다. 해독 프로그램은 C++ 소스에서 컴파일됩니다. 그러나 다른 응답에 따르면, 프로그램 자체와 관련이있는 것으로 보입니다. 그래서 내 양식에서 버튼 클릭으로 백그라운드 작업자를 시작하고 DoWork 메소드를 실행합니다. 이 메서드에서는 스레드 풀을 사용하여 다음 문서에서 제공하는 예제를 사용하여 스레드를 시작합니다. http://msdn.microsoft.com/en-us/library/3dasc8as%28v=vs.80%29.aspx – udeleng

답변

1

아니요 Process.Start가 차단하지 않습니다. 그러나 시작하려는 응용 프로그램이있을 수 있습니다. 예를 들어 뮤텍스를 사용하여 한 번에 하나의 인스턴스 만 실행되고 있는지 확인합니다.

1

대답은 간단합니다 : 아니오, 프로세스를 시작하면 다른 스레드를 차단하지 않습니다.