0

そのため、USB デバイスのプラグインと削除をチェックするコードがいくつかあります。

public void Main_Shown(object sender, EventArgs e)
        {
            var watcheradd = new ManagementEventWatcher();
            var queryadd = new WqlEventQuery("SELECT * FROM Win32_DeviceChangeEvent WHERE EventType = 2");
            watcheradd.EventArrived += new EventArrivedEventHandler(watcher_deviceadded);
            watcheradd.Query = queryadd;
            watcheradd.Start();


            var watcherremove = new ManagementEventWatcher();
            var queryremove = new WqlEventQuery("SELECT * FROM Win32_DeviceChangeEvent WHERE EventType = 3");
            watcherremove.EventArrived += new EventArrivedEventHandler(watcher_deviceremoved);
            watcherremove.Query = queryremove;
            watcherremove.Start();   
}

watchremoveとにかく、プログラムが終了する前にandwatcheraddループを停止して、停止コードによる例外を防ぐことができるのではないかと思っていました:

     private void Exit_Main(object sender, EventArgs e)
    {
        Process p = new System.Diagnostics.Process();
        ProcessStartInfo si = new System.Diagnostics.ProcessStartInfo();
        si.RedirectStandardInput = false;
        si.CreateNoWindow = true;
        si.UseShellExecute = false;
        si.FileName = "adb.exe";
        si.Arguments = "kill-server";
        p = Process.Start(si);
        p.WaitForExit();

        Application.Exit();
        //EXIT APPLICATION!!!            
    }

Main_Shown.deviceadd.Stop();これは正しい構文や方法ではありません。結果は、上記のループを安全に停止し、プログラムが例外なく終了できるようにする必要があります。

4

1 に答える 1

0

解決策を得ました。だから私は追加する必要がありました

 ManagementEventWatcher watcheradd = new ManagementEventWatcher();
    WqlEventQuery queryadd = new WqlEventQuery();
    ManagementEventWatcher watcherremove = new ManagementEventWatcher();
    WqlEventQuery queryremove = new WqlEventQuery();

クラスの上にあり、クラスをグローバルに設定します。そのため、以下のコードを使用して問題なく終了します。

`si.FileName = "adb.exe";
        si.Arguments = "kill-server";
        p = Process.Start(si);
        p.WaitForExit();
        watcherremove.Stop();
        watcheradd.Stop();
        Application.Exit();
        //EXIT APPLICATION!!`

助けてくれてありがとう。

于 2015-05-11T13:06:14.007 に答える