Tôi gặp sự cố mà tôi không thể tìm ra liên quan đến Dịch vụ Windows mà tôi đã viết bằng C#. Những gì tôi đang cố gắng làm là chờ một khoảng thời gian nhất định cho một tiến trình con chấm dứt trước khi tôi buộc phải giết nó và ngừng dịch vụ. Tôi đã đặt thời gian chờ của mình từ 5 đến 15 giây và dịch vụ của tôi chờ khoảng thời gian thích hợp và sau đó giết chết đứa trẻ và dừng lại khi tôi dừng nó qua cửa sổ dịch vụ mmc. Tuy nhiên nếu tôi tắt máy tính, dịch vụ của tôi bị thổi bay đi trước khi nó có thể đợi và dừng lại đúng cách. Tôi đã đọc rằng Windows cho phép một thời gian chờ 30 giây cho một dịch vụ để tắt máy trước khi nó thổi nó đi. Mã của tôi đang thực thi trong thời gian ít hơn 30 giây, tối đa là khoảng 20 giây hoặc lâu hơn, tùy thuộc vào những gì tôi đặt thời gian chờ tại.Buộc các cửa sổ phải chờ một dịch vụ dừng khi tắt máy
Tôi đã thử sử dụng hàm SetServiceStatus() trong win32 Api nhưng nó không thay đổi chức năng của mã. Tôi đã xác minh rằng cuộc gọi hàm đang thành công. Có cách nào khác để buộc Windows phải đợi dịch vụ của tôi tắt máy đúng cách không? Tôi đang thử nghiệm nó trong Windows 7 x86, và Windows Vista Sp1 x86.
+1: * Rõ ràng * giải pháp ở đây là làm cho dịch vụ mất ít thời gian hơn để dừng lại. Soooo nhiều ứng dụng bỏ qua tầm quan trọng của điều này và. –