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 ạ 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
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
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
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
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ứ ...
- 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.