Tôi đang cố viết mã đa luồng và đối mặt với một số câu hỏi đồng bộ hóa. Tôi biết có rất nhiều bài viết ở đây nhưng tôi không thể tìm thấy bất cứ điều gì phù hợp.đồng bộ hóa chủ đề - không có giao diện người dùng
Tôi có một System.Timers.Timer
đã trôi qua sau mỗi 30 giây, nó chuyển đến db và kiểm tra xem có bất kỳ công việc mới nào không. Nếu anh ta tìm thấy một, anh ta thực hiện công việc trên thread hiện tại (bộ đếm thời gian mở thread mới cho mỗi lần trôi qua). Trong khi công việc đang chạy, tôi cần phải thông báo cho chủ đề chính (nơi bộ đếm thời gian) về tiến trình.
Ghi chú:
- Tôi không có giao diện người dùng vì vậy tôi không thể làm
beginInvoke
(hoặc sử dụng sợi nền) như tôi thường làm trong winforms. - Tôi nghĩ để triển khai
ISynchronizeInvoke
trên lớp học chính của mình nhưng có vẻ hơi quá mức (có thể tôi đã sai ở đây). - Tôi có một sự kiện trong lớp công việc và đăng ký lớp học chính và tôi gọi sự kiện bất cứ khi nào tôi cần nhưng tôi lo rằng nó có thể gây ra sự chặn.
- Mỗi công việc có thể mất tối đa 20 phút.
- Tôi có thể có tối đa 20 công việc chạy đồng thời.
Câu hỏi của tôi là:
đúng cách để thông báo cho chủ đề chính của tôi về bất kỳ sự tiến bộ trong chủ đề công việc của tôi là gì?
Cảm ơn bạn đã được trợ giúp.
Bạn không thể thông báo cho a thread. Bạn có thể thông báo cho một đối tượng. Mô tả một phần tốt hơn và bạn có thể nhận được câu trả lời tốt hơn. –