얼마나 위해 당신이 스레드에 부과해야합니까? 코드가 계속되기 전에 루프에서 시작된 모든 작업을 완료해야하지만 루프 내의 작업이 완료되는 순서는 신경 쓰지 않으면 조인을 호출하면됩니다. Kevin Kenny's answer,에 자세한 내용을 추가하려면 외부의 루프를 호출해야합니다. 이것은 당신이 시작 스레드에 대한 참조를 개최 컬렉션을해야합니다 의미 : 당신은 루프 내부에 가입라고하면 모든 스레드를 사용하지
// Start all of the threads.
List<Thread> startedThreads = new List<Thread>();
foreach (...) {
Thread thread = new Thread(new ThreadStart(MyMethod));
thread.Start();
startedThreads.Add(thread);
}
// Wait for all of the threads to finish.
foreach (Thread thread in startedThreads) {
thread.Join();
}
대조적으로, 결과는 기본적으로 동일하다. 루프 본문을 반복 할 때마다 스레드가 만들어지고 시작되지만 즉시 결합되어 완료 될 때까지 기다립니다.
개별 스레드가 결과를 생성하는 경우 (예 : 로그에 메시지 쓰기) 스레드간에 조정이 없기 때문에 메시지가 여전히 순서가 잘못된 것처럼 보일 수 있습니다. 스레드를 모니터와 조정하여 결과를 순서대로 출력 할 수 있습니다.