Cần pro giúp đở về multi thread c# xin hậu tạ

Discussion in 'Linux - PHP - Python - C# - Java' started by Quaydau, Dec 6, 2019.

  1. Quaydau

    Quaydau Sơ Nhập Giang Hồ

    Chào các các, tình hình là e có làm cái tool quản lí profile chrome.
    Hiện thì tool đang chạy đơn luồng và mỗi lần hoạt động thì nó chạy từ trên xuống dưới lần lượt theo thứ tự profile như hình ạ

    [​IMG]


    giờ e muốn làm cho nó chạy đa luồng ví dụ mỗi lần chạy 5 luồng thì nó sẽ mở 5 profile cùng lúc theo thứ tự từ trên xuống dưới.
    Ví dụ chạy profile 1,2,3,4,5 , khi chạy xong 5 profile này thì chạy tiếp 6,7,8,9,10.
    E có đoạn code sau để thực thi code trong thread

    Thread t1 = new Thread((ThreadStart) =>
    {
    for (int loop = Convert.ToInt32(numericUpDown10.Value) - 1; loop < Convert.ToInt32(numericUpDown11.Value); loop++)
    {
    // Hiện tại thì code sẽ chạy bên trong vòng lặp này
    }
    });
    t1.IsBackground = true;
    t1.Start();

    Hiện tại biến loop khi chạy xong code bên trong mới trả về giá trị của biến nên e không biết làm cách nào để tạo các thread khác để chạy và đồng bộ với biến loop đó

    ví dụ như này cho ae dể hiểu ạ

    Ta có hai thằng A và B thi nhau đếm
    Nếu A đếm 1 rồi thì B đếm 2
    Hai thằng này thực thi song song ạ

    Pro nào giúp được e xin hậu tạ ạ e cảm ơn
     
  2. Dang

    Dang Bang Chúng

    Kết hợp với Lock nhé bro, xem ví dụ ở link bên dưới - đoạn C# Thread Synchronization Example :
    Code:
    https://www.javatpoint.com/c-sharp-thread-synchronization
     
    Quaydau and hocauo40 like this.
  3. Tuan

    Tuan Tân Thủ Thôn

    Bạn dùng Backgroundworker. Khởi tảo bgw1,2,3 sau đó đặt bgw1.dowork() rồi chuyển tiếp sang 2,3... bgw có hỗ trợ báo cáo tiến trình làm tới đâu luôn sẽ tiện quản lý. Chi tiết google Backgroundworker.
    Theo mình thì Bgw sử dụng thread inside và ở level cao hiwn nên dếx sửdungj hơn
     
  4. Quaydau

    Quaydau Sơ Nhập Giang Hồ

    Cảm ơn bạn , cái Lock này theo mình hiểu, một khi được sử dụng, dữ liệu sẽ bị khóa lại và các thread khác muốn sử dụng phải chờ cho đến khi dữ liệu hay tài nguyên được giải phóng.

    Ví dụ thread A chạy xong rồi mới đến thread B đúng ko bạn, nhưng mình lại cần chạy đồng thời các thread tại một thời điểm bạn ơi
     
  5. Quaydau

    Quaydau Sơ Nhập Giang Hồ

    pro nào rãnh đi ngang giúp e cái e xin hậu tạ ạ
     
  6. Dang

    Dang Bang Chúng

    Vậy bạn thêm 1 biến / thuộc tính để gán cho profile đó để tiện kiểm tra nó đã / chưa / hoặc đang được thực hiện. Với mình thấy cái loop trong trường hợp của bạn nó phải wrap cái thread chứ ...
     
    Quaydau likes this.
  7. Quaydau

    Quaydau Sơ Nhập Giang Hồ

    Bạn có thể cho mình 1 ví dụ được ko bạn, ví dụ hai thằng đang đếm, a đang đếm 1 thì b sẽ đếm 2
     
  8. level10

    level10 Tân Thủ Thôn

    - Bạn tạo một cờ trạng thái trong mỗi bản ghi với default là NotProcess.
    - Khi bản ghi đó đang được xử lý bở một thread thì bạn chuyển trạng thái sang Processing.
    - Sau khi đã xử lý xong bản ghi đó thì bạn chuyển trạng thái sang Processed.

    Bạn lập trình thread chỉ tìm các bản ghi có trạng thái là NotProcess để xử lý như vậy bạn tạo bao nhiêu thread cũng được.
     
    Quaydau likes this.
  9. Quaydau

    Quaydau Sơ Nhập Giang Hồ

    Cảm ơn pro, pro có thể cho e vài dòng mã ví dụ được ko ạ
     
  10. Quaydau

    Quaydau Sơ Nhập Giang Hồ

    Đã xong cảm ơn các pro mob đi ngang close giúp ạ
     
  11. Hoa Mãn Lâu

    Hoa Mãn Lâu Trưởng Môn

    Thím mần sao dzậy, up code lên cho ae học hỏi với
     
  12. Nai

    Nai MiddleMan Staff Member

    Thớt xử lý xong rồi nhớ hậu tạ như đã hứa nhé. {byebye}
     
  13. catd3vjl

    catd3vjl Khách Qua Đường

    smartthreadpool có hàm waitall