C# IOExceptionの発生理由について
お世話になります。
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 エラーが発生するとスローされます』と書かれていましたが、発生の原因が分かりません。
偶然かもしれませんが、決まってデバイスを抜いた時にこの例外が発生してしまいます。
原因が分かる方いらっしゃいましたら、御教授頂けますと幸いです。