お世話になります。

C#にて、PCに接続されているデバイスの数を調べる為に

開いているCOMポートを表示するアプリケーションを作っています。

新たな接続や、解除を検知して表示を更新する為に、以下の様な方法でポーリングを行っています。

    public void startPoring()
    {
        while(true){
            try
            {
                if(this.usbDeviceList.Count!=SerialPort.GetPortNames().Count();)
                {
                    this.usbDeviceList = SerialPort.GetPortNames().ToList();
                    this.dispConnectedDevice.Invoke((Action)(() =>
                    {
                        this.dispConnectedDevice.Clear();
                        foreach (var deviceName in this.usbDeviceList)
                        {
                            this.dispConnectedDevice.AppendText(deviceName + "\r\n");
                        }
                    }));
                }
            }
            catch
            {

            }
        }

    }

実際にテストしてみると、接続を解除した時に、SerialPort.GetPortNames().Count()の所でIOExceptionが発生してしまいます。(ので、try-catchしてます)

MSDNには『IOException は、ファイルの読み取りまたは書き込みに失敗した場合など、I/O エラーが発生するとスローされます』と書かれていましたが、発生の原因が分かりません。

偶然かもしれませんが、決まってデバイスを抜いた時にこの例外が発生してしまいます。

原因が分かる方いらっしゃいましたら、御教授頂けますと幸いです。