Membina Perkhidmatan Windows C# Responsif untuk Pengesanan Pemacu USB
Banyak aplikasi yang diedarkan perlu bertindak balas terhadap pemasukan dan pengalihan keluar pemacu USB. Artikel ini menunjukkan cara untuk mencipta perkhidmatan C# Windows yang mencapai ini dengan pasti. Kami akan memanfaatkan Windows Management Instrumentation (WMI) API, menawarkan kebolehpercayaan dan keserasian yang unggul berbanding kaedah seperti WndProc, yang tidak sesuai untuk perkhidmatan.
Coretan kod berikut menyediakan pelaksanaan berasaskan WMI asas:
<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>
Kod ini menetapkan pemerhati yang mendengar acara Win32_VolumeChangeEvent
dengan EventType
ialah 2 (menunjukkan sisipan media).
Pengendalian dan Tindak Balas Acara
Pengendali acara watcher_EventArrived
(tidak ditunjukkan) akan mengandungi logik untuk bertindak balas kepada sisipan pemacu. Ini mungkin melibatkan memulakan aplikasi yang diedarkan atau melakukan tindakan lain yang perlu.
Keteguhan dan Pengendalian Ralat
Melaksanakan pengendalian ralat yang komprehensif dan pengurusan pengecualian adalah penting untuk memastikan perkhidmatan berterusan beroperasi, walaupun apabila menghadapi ralat yang tidak dijangka. Ini harus dimasukkan ke dalam kaedah watcher_EventArrived
.
Memperluaskan Fungsi
Contoh asas ini boleh disesuaikan untuk pelbagai senario. Anda boleh mengubah suai pengendalian acara, mencipta berbilang pemerhati untuk jenis media yang berbeza dan menambah pengendalian acara untuk penyingkiran pemacu (EventType = 3).
WMI memperkasakan perkhidmatan Windows untuk bertindak balas secara dinamik kepada peristiwa pemacu USB, menghasilkan aplikasi teragih yang lebih responsif dan boleh disesuaikan.
Atas ialah kandungan terperinci Bagaimanakah Perkhidmatan Windows C# Dapat Mengesan Memasukkan dan Mengalih Keluar Pemacu USB?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!