2012-10-17 7 views
2

나는 maze를 풀기 위해 Multithreading Application을 코딩했다. 나는 Program Class, Main() 메쏘드에서 새로운 실을 시작하여 미로 해결을 시작합니다. 그런 다음 분기를 찾으면 정적 메서드를 호출하여 새 스레드를 만듭니다. 예를 들어 완료 메시지를 표시하기 위해 백그라운드에서 실행중인 모든 스레드가 완료 될 때까지 기다리는 방법은 무엇입니까?C#은 모든 스레드가 Main()에서 끝날 때까지 기다린다.

var explorer = new Explorer(/*Some arguments*/); 
var thread = new Thread(explorer.Explore) {Name = "Thread 0"}; 
thread.Start(); 

//Thread_0_and_Threads_he_generates_through_static_class.Join()  

Console.WriteLine("I'm done bro."); 
Console.ReadKey(); 

이 할 수있는 방법이 있나요 :

이것은 내가 할 노력하고있어의 eskeleton은? 솔직히, 이런 식으로 멀티 쓰레딩을 처음으로 사용하기 때문에 가난한 코드에 대해 사과드립니다. 다른 어떤 정보라도 기꺼이 제공 할 것입니다. 미리 감사드립니다.

답변

3

아마도 Thread.Join() 무엇입니까?

this article도 유용 할 수 있습니다.

+0

나는 그것을 시험해 보았지만'thread 0' 스레드에서만 작동한다. 다른 스레드는 계속 동작한다. 나는 "나는 다 끝났어." 메시지를 보내면 더 많은 데이터가 입력됩니다. 아마도 내가 잘못하고있는 것일 수 있습니까? –

+0

@Jean, 질문 하나만 스레드가 있습니다. 만약 당신이 여러개의 쓰레드를 가지고 있다면 각각에 대해 'Join'을 호출해야합니다. –

+0

@DourHighArch @DourHighArch '프로그램'클래스에서 생성 된 하나의 스레드로 시작하지만 스레드가 작동 할 때 정적 메서드 (다른 클래스에서)를 호출하여 다른 스레드를 만들어 미로의 다른 부분을 계속 탐색합니다. 그러나 그것은'프로그램'클래스에서 만들어지지 않았습니다. 그래서 나는 주어진 시간에 얼마나 많은 쓰레드가 작업 중인지 알지 못하기 때문에 그들 모두에 대해 Join()을 호출 할 수 있습니다. –

1

멀티 스레딩은 정말 어려운 주제입니다.

스레딩에 대한 첫 걸음을 딛고 있으므로 Microsoft의 Thread Synchronization 초보자 용 문서를주의 깊게 참조하십시오.

해피 대딩!

관련 문제