private void SetupDevice(DeviceInstance devi) { /* 直前のデバイスを終了 */ if (devi_ != null) { /* 登録イベント解除 */ devi_.StatusChanged -= OnDeviceStatusChanged; devi_.SendDataRequest -= OnDeviceSendBufferEmpty; devi_.DataRateUpdated -= OnDeviceDataRateUpdated; /* デバイス終了 */ devi_.DeviceShutdownRequest(); } /* 新しいデバイスをセットアップ */ if (devi != null) { /* イベント登録 */ devi.StatusChanged += OnDeviceStatusChanged; devi.SendDataRequest += OnDeviceSendBufferEmpty; devi.DataRateUpdated += OnDeviceDataRateUpdated; /* ゲートの設定/状態を反映 */ devi.ConnectRequest = gatep_.ConnectRequest; } /* インスタンス入れ替え */ lock (send_queue_sync_) { devi_ = devi; } }