USB 드라이브 감지를 위한 반응형 C# Windows 서비스 구축
많은 분산 애플리케이션은 USB 드라이브 삽입 및 제거에 반응해야 합니다. 이 문서에서는 이를 안정적으로 달성하는 C# Windows 서비스를 만드는 방법을 보여줍니다. WMI(Windows Management Instrumentation) API를 활용하여 서비스에 적합하지 않은 WndProc와 같은 방법에 비해 뛰어난 안정성과 호환성을 제공합니다.
다음 코드 조각은 기본적인 WMI 기반 구현을 제공합니다.
<code class="language-csharp">using System.Management; // Create a ManagementEventWatcher to monitor for volume change events. ManagementEventWatcher watcher = new ManagementEventWatcher(); // Define a WQL query to filter for volume insertion events (EventType = 2). WqlEventQuery query = new WqlEventQuery("SELECT * FROM Win32_VolumeChangeEvent WHERE EventType = 2"); // Attach an event handler to process detected events. watcher.EventArrived += new EventArrivedEventHandler(watcher_EventArrived); // Assign the query to the watcher. watcher.Query = query; // Start monitoring. watcher.Start(); // Wait for the next event. Consider using a more robust loop for continuous monitoring. watcher.WaitForNextEvent();</code>
이 코드는 Win32_VolumeChangeEvent
이 2(미디어 삽입을 나타냄)인 EventType
이벤트를 수신하는 감시자를 설정합니다.
이벤트 처리 및 대응
watcher_EventArrived
이벤트 핸들러(표시되지 않음)에는 드라이브 삽입에 응답하는 논리가 포함됩니다. 여기에는 분산 애플리케이션을 시작하거나 기타 필요한 작업을 수행하는 것이 포함될 수 있습니다.
견고함과 오류 처리
예기치 않은 오류가 발생하는 경우에도 서비스의 지속적인 운영을 보장하려면 포괄적인 오류 처리 및 예외 관리를 구현하는 것이 중요합니다. 이는 watcher_EventArrived
메소드
기능 확장
이 기본 예는 다양한 시나리오에 맞게 사용자 정의할 수 있습니다. 이벤트 처리를 수정하고, 다양한 미디어 유형에 대한 여러 감시자를 생성하고, 드라이브 제거를 위한 이벤트 처리를 추가할 수 있습니다(EventType = 3).
WMI는 Windows 서비스가 USB 드라이브 이벤트에 동적으로 반응할 수 있도록 지원하여 응답성과 적응성이 뛰어난 분산 애플리케이션을 제공합니다.
위 내용은 C# Windows 서비스는 USB 드라이브 삽입 및 제거를 어떻게 감지할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!