USB ドライブ検出用のレスポンシブ C# Windows サービスの構築
多くの分散アプリケーションは、USB ドライブの挿入と取り外しに反応する必要があります。この記事では、これを確実に実現する C# Windows サービスを作成する方法を説明します。 Windows Management Instrumentation (WMI) 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
イベントをリッスンするウォッチャーを確立します。EventType
は 2 (メディア挿入を示します)。
イベントの処理と応答
watcher_EventArrived
イベント ハンドラー (図示せず) には、ドライブの挿入に応答するロジックが含まれます。これには、分散アプリケーションの起動やその他の必要なアクションの実行が含まれる場合があります。
堅牢性とエラー処理
包括的なエラー処理と例外管理を実装することは、予期しないエラーが発生した場合でもサービスの継続的な動作を保証するために重要です。 これは watcher_EventArrived
メソッドに組み込む必要があります。
機能の拡張
この基本的な例は、さまざまなシナリオに合わせてカスタマイズできます。 イベント処理を変更したり、さまざまなメディア タイプに複数のウォッチャーを作成したり、ドライブの削除 (EventType = 3) のイベント処理を追加したりできます。
WMI により、Windows サービスが USB ドライブのイベントに動的に反応できるようになり、その結果、応答性が高く適応性の高い分散アプリケーションが実現します。
以上がC# Windows サービスはどのようにして USB ドライブの挿入と取り外しを検出できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。