Assuming a WinForm app, you could override your Form's standard WndProc and catch the broadcast messages about devices being added/removed and act on those signals. Here is a skeleton:
protected override void WndProc(ref Message m) {
if (m.Msg==WM_DEVICECHANGE) {
int wParam=(int)m.WParam;
if (wParam==DBT_DEVICEARRIVAL) DeviceAdded();
if (wParam==DBT_DEVICEREMOVECOMPLETE) DeviceRemoved();
}
}
The constants involved are: WM_DEVICECHANGE = 0x0219, DBT_DEVICEARRIVAL = 0x8000, DBT_DEVICEREMOVECOMPLETE = 0x8004
:)