USBリムーバブルディスクを探すアプリをスタートアップに登録させているのですが、
稀に探せない時が有ります。
探せない理由が解りません。
●スタートアップ時だからOSの挙動が不安定でUSBリムーバブルディスクを認識している途中だから?
(ディレイを置いたら認識できる?)
●USBリムーバブルディスクの銘柄によっては認識できない?
以下、USBリムーバブルディスクを探している箇所の抜粋です。
フォームのLoadイベントの最初で行っていますので、アプリ起動直後に
USBリムーバブルディスクを探しています。
『
'認識するまで3秒間(1秒×3回)繰り返す。
Do While (intRetryCounter < 3)
For Each objDI As IO.DriveInfo In IO.DriveInfo.GetDrives()
If objDI.DriveType = IO.DriveType.Removable And objDI.IsReady Then
strRtn = objDI.Name
Exit For
End If
Next
If strRtn <> String.Empty Then
'見つかったなら抜ける
Exit Do
Else
'見つからなかったら1秒待ってからもう一回探す。
System.Threading.Thread.Sleep(1000)
intRetryCounter += 1
End If
Loop
』
認識できない銘柄が有るのが、原因だったら仕方無いのですが、
OSが不安定だとしたら、リトライ回数を増やした方が良いでしょうか?
調べている内にわかったのですが、
Embeddedなためか、認識できないUSBメモリが有る事がわかりました。
大容量だとNGのようです。
OSが不安定なため、認識できない場合も有るようです。
アプリ起動後にツールバーにUSBのインジケータが
表示されている事から、スタートアップ時のアプリが起動後、
USBメモリを認識しているようです。
認識できないメモリは仕方ないとして、スタートアップだけでもしっかり
メモリを認識させたいです。
そこで、ブート終了時にスタートアッププログラムを実行したいのですが、
.netでブート終了を検知する事ができますでしょうか?
もしくは、レジストリの編集が必要なのでしょうか?
スタートアップでアプリを起動し、アプリ内部でブート終了を待ってから、
実処理に移ろうと考えてます。
このような事が可能でしょうか?