Tôi có dịch vụ cửa sổ được viết bằng .NET 4, tạo nhiều luồng chứa chạy vô hạn trong khi chạy (vòng). Khi tôi ngừng dịch vụ, boolean đang chạy trở thành false và chúng ta thoát khỏi vòng lặp while và một khi mỗi luồng làm điều đó, dịch vụ cuối cùng sẽ dừng lại.Làm cách nào tôi có thể hủy cuộc gọi Nhận dịch vụ nhận tin nhắn Microsoft ServiceBus?
Trong khi đó, nó gọi oMessageReceiver.Receive (TimeSpan.FromSeconds (30)). vì vậy đôi khi khi tôi cố gắng ngừng dịch vụ, tôi phải đợi tới 30 giây để quá trình Receive() hết thời gian chờ.
Một tùy chọn sẽ là giảm thời gian chờ từ 30 giây xuống nhỏ hơn. Tôi không chắc chắn về những hình phạt về hiệu suất mà nó sẽ phải gánh chịu, nhưng vì quá trình này không thực hiện bất kỳ công việc nào mà không có BrokeredMessage, tôi thực sự muốn giữ người nghe mở càng lâu càng tốt.
Tôi thấy rằng có phương thức .BeginReceive() trên Trình nhận thư. Tôi có một cảm giác sẽ có một mô hình lập trình tôi có thể sử dụng ở đây mà sẽ ngăn chặn dịch vụ của tôi treo trong khi tôi đã chờ đợi để nhận được thời gian chờ. Bất cứ ai có thể mô tả cách sử dụng các chức năng APM Bắt đầu/Kết thúc trong một Dịch vụ Windows vô hạn không?