bao nhiêu để bạn cần phải áp đặt trên các chủ đề? Nếu bạn chỉ cần tất cả các công việc bắt đầu trong vòng lặp để kết thúc trước khi mã tiếp tục, nhưng bạn không quan tâm đến thứ tự công việc trong vòng lặp kết thúc, sau đó gọi tham gia là câu trả lời. Để thêm chi tiết hơn vào Kevin Kenny's answer, bạn nên gọi Tham gia bên ngoài vòng lặp. Điều này có nghĩa bạn sẽ cần một bộ sưu tập để giữ tham chiếu đến các chủ đề bạn bắt đầu:
// 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();
}
Ngược lại, nếu bạn gọi Tham gia bên trong vòng lặp, kết quả sẽ về cơ bản giống như không sử dụng ở tất cả các chủ đề. Mỗi lần lặp của thân vòng lặp sẽ tạo và bắt đầu một luồng nhưng sau đó ngay lập tức tham gia nó và đợi nó kết thúc.
Nếu các chủ đề riêng lẻ tạo ra một số kết quả (ví dụ: viết thư trong nhật ký) thì thư có thể vẫn xuất hiện không đúng thứ tự vì không có sự phối hợp giữa các chuỗi. Có thể để có được các chủ đề để xuất kết quả của họ theo thứ tự bằng cách phối hợp chúng với một màn hình.
Nguồn
2008-08-10 08:37:28