private void MainWindow_FormClosed(object sender, FormClosedEventArgs e) { m_deviceConnector.ConnectResult -= new Bosch.VideoSDK.GCALib._IDeviceConnectorEvents_ConnectResultEventHandler(DeviceConnector_ConnectResult); if (m_state == State.Connected) { m_deviceProxy.ConnectionStateChanged -= new Bosch.VideoSDK.GCALib._IDeviceProxyEvents_ConnectionStateChangedEventHandler(DeviceProxy_ConnectionStateChanged); m_deviceProxy.Disconnect(); } m_axCameo.Dispose(); }
private void DeviceConnector_ConnectResult(Bosch.VideoSDK.Device.ConnectResultEnum connectResult, string url, Bosch.VideoSDK.Device.DeviceProxy deviceProxy) { bool success = false; if (connectResult == Bosch.VideoSDK.Device.ConnectResultEnum.creInitialized) { if (deviceProxy.VideoInputs.Count > 0) { success = true; try { m_cameo.SetVideoStream(deviceProxy.VideoInputs[1].Stream); this.m_videoInputVCAEvents = deviceProxy.VideoInputs[(object)1] as Bosch.VideoSDK.GCALib._IVideoInputVCAEvents_Event; m_axCameo.VcaConfig.DisplayMode = Bosch.VideoSDK.Live.VcaDisplayModes.vcmRenderVCD; if (this.m_videoInputVCAEvents != null) { // ISSUE: method pointer m_videoInputVCAEvents.MotionDetectorsStateChanged += new Bosch.VideoSDK.GCALib._IVideoInputVCAEvents_MotionDetectorsStateChangedEventHandler(VideoInputVCAEvents_MotionDetectorsStateChanged); //this.m_videoInputVCAEvents.add_MotionDetectorsStateChanged(new _IVideoInputVCAEvents_MotionDetectorsStateChangedEventHandler((object) this, (UIntPtr) __methodptr(VideoInputVCAEvents_MotionDetectorsStateChanged))); } } catch (Exception ex) { CheckException(ex, "Failed to render first video stream of {0}", url); success = false; } } } if (success) { m_deviceProxy = deviceProxy; m_deviceProxy.ConnectionStateChanged += new Bosch.VideoSDK.GCALib._IDeviceProxyEvents_ConnectionStateChangedEventHandler(DeviceProxy_ConnectionStateChanged); m_state = State.Connected; } else { if (deviceProxy != null) { deviceProxy.Disconnect(); } m_state = State.Disconnected; MessageBox.Show("Failed to connect to \"" + url + "\"."); } UpdateGUI(); }