Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: Chờ Thread xử lý xong rồi mới thực hiện lệnh khác

  1. #1
    Ngày gia nhập
    07 2010
    Bài viết
    138

    Mặc định Chờ Thread xử lý xong rồi mới thực hiện lệnh khác

    Mình có một hàm DoWork làm một nhiệm vụ bất kỳ, với một khoảng thời gian không được xác định từ trước
    Code:
    void DoWork(object obj) 
    {//   }
    Bây giờ mình muốn các hàm được xử lý đồng thời
    Code:
                        for (int i = 0; i < list.Count; i++)
                        {
                          Thread thread = new Thread(DoWork);
                           thread.Start(i);
                        }
                        commandB;
    Vấn đề của mình gặp phải là khi tất cả các Thread chưa được xử lý xong, lệnh commandB lại được thực thi. Có các nào bắt commandB phải chờ khi tất cả các Thread xong không??

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Bạn gọi phương thức WaitForExit của lớp thread. Phương thức này chỉ trả về khi thread đã kết thúc.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  3. #3
    Ngày gia nhập
    11 2007
    Nơi ở
    Biết để làm gì?
    Bài viết
    827

    Vứt thằng commandB vào 1 thread khác, dùng hàm Joind để đợi cái thread dowork kia kết thúc
    Nên khai báo trước 1 mảng thread hơn là cách viết của cậu
    Thread[] array = new Thread[list.Count];
    for (int i = 0; i < array.Length; i++)
    {
    // Start the thread with a ThreadStart.
    array[i] = new Thread(new ThreadStart(Start));
    array[i].Start();
    }
    Cánh Chym ứ mỏi

  4. #4
    Ngày gia nhập
    07 2010
    Bài viết
    138

    @Dieucay: Theo mình hiểu thì cái Join để bắt tất cả những lệnh phía sau Thread phải chờ đến khi thread thực hiện xong. Mình thử viết
    Code:
    for (int i = 0; i < list.Count; i++)
                        {
                          Thread thread = new Thread(DoWork);
                           thread.Start(i);
                          if(i==list.Count-1) thread.Join;
                        }
                        Thread newThread = new Thread(commandB);                        
                            newThread .Start();
    nhưng vẫn không được

    @meocon: Mình không tìm thấy phương thức WaitForExit đâu hết :(

  5. #5
    Ngày gia nhập
    08 2011
    Nơi ở
    Yên Bái- Hà Nội
    Bài viết
    961

    Mình chưa dùng method đó bjo. Nhưng search thì có nè. bạn vào đây coi:
    http://social.msdn.microsoft.com/Search/en-US?query=WaitForExit&beta=0&ac=8
    Skype: mrfour.it - Yahoo:mrfour_it
    Gmail: mrfour.it@gmail.com
    Bạn muốn học lập trình? Bạn chưa có kiến thức cơ bản? Bạn muốn học từ cơ bản tới nâng cao?... Bạn muốn có source code để tham khảo? Muốn có người hỗ trợ khi học?....http://www.laptrinh123.com sẽ giúp bạn những điều đó!

  6. #6
    Ngày gia nhập
    12 2008
    Bài viết
    235

    Mặc định Chờ Thread xử lý xong rồi mới thực hiện lệnh khác

    Bạn có thể dùng ThreadPool

  7. #7
    Ngày gia nhập
    07 2010
    Bài viết
    138

    Trích dẫn Nguyên bản được gửi bởi ducthiem90 Xem bài viết
    Bạn có thể dùng ThreadPool
    Mình đang search cũng có người bảo vậy nhưng code khó hiểu kinh :(

Các đề tài tương tự

  1. Lập trình C Sử dụng thread và các phương thức đồng bộ trên thread để viết giải quyết bài toán reader/writer dạng tổng quát ?
    Gửi bởi danghoa92 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 26-04-2013, 10:23 PM
  2. cài xong SQL 2008 xong rồi vẫn không connect được
    Gửi bởi thanhlong8x trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 2
    Bài viết cuối: 14-12-2012, 10:05 PM
  3. Trả lời: 0
    Bài viết cuối: 16-02-2012, 10:37 PM
  4. Lập trình C# | Kiểm tra Thread đã chạy xong chưa
    Gửi bởi mouseover trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 12-11-2010, 11:16 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn