Tôi sắp triển khai giải pháp FileSystemWatcher nguyên mẫu. Tôi có một thư mục để theo dõi các tập tin sáng tạo, và nhiệm vụ mút các tập tin được tạo ra và chèn vào một DB. Khoảng cách này sẽ liên quan đến việc đọc và xử lý 6 hoặc 7, 80 tệp văn bản char xuất hiện với tốc độ 150mS trong các vụ nổ xảy ra sau mỗi vài giây và hiếm khi tệp nhị phân 2MB cũng phải được xử lý. Điều này rất có thể sẽ là một quy trình 24/7.Sau khi FileSystemWatcher kích hoạt - Thread Pool hoặc Thread chuyên dụng?
Từ những gì tôi đã đọc về đối tượng FileSystemWatcher, tốt hơn là enqueue các sự kiện của nó trong một chủ đề và sau đó dequeue/xử lý chúng trong một chủ đề khác. Các quandary tôi có ngay bây giờ là những gì sẽ là cơ chế tạo ra tốt hơn của thread mà không chế biến. Những lựa chọn tôi có thể thấy là:
Mỗi lần tôi nhận được sự kiện FSW, tôi tạo thủ công một chủ đề mới (vâng tôi biết .. kiến trúc ngu ngốc, nhưng tôi phải nói).
Ném chế biến tại CLR bơi thread bất cứ khi nào tôi nhận được một sự kiện FSW
On khởi động, tạo ra một sợi thứ hai dành riêng cho việc xử lý và sử dụng một mô hình sản xuất/tiêu dùng để giải quyết công việc. Các chủ đề chính enqueues yêu cầu và thread thứ hai dequeues nó và thực hiện công việc.
Tôi đang hướng tới phương pháp thứ ba là phương pháp ưu tiên vì tôi biết chuỗi công việc sẽ luôn được yêu cầu - và cũng có thể nhiều hơn vì tôi không cảm thấy gì cho hồ bơi.
+1, tôi sẽ thêm điều đó bằng cách sử dụng nhóm chủ đề sẽ thử và xử lý yêu cầu của bạn đồng thời trên nhiều chủ đề không giống như một điều tốt cho ứng dụng của bạn. –
Anon .. Từ thử nghiệm tôi đã thực hiện xử lý của tôi nên được thực hiện tốt và thực sự trong 150mS ngoại trừ trường hợp xử lý tệp nhị phân - sẽ chạy ở khoảng 150mS nhưng phải là một sự xuất hiện hiếm hoi sẽ có nhiều thời gian để bắt kịp nếu mọi thứ được xếp hàng đợi. –