private async void btONVIFConnect_Click(object sender, EventArgs e) { if (btONVIFConnect.Text == "Connect") { try { btONVIFConnect.Enabled = false; btONVIFConnect.Text = "Connecting"; if (onvifControl != null) { onvifControl.Disconnect(); onvifControl.Dispose(); onvifControl = null; } if (string.IsNullOrEmpty(edONVIFLogin.Text) || string.IsNullOrEmpty(edONVIFPassword.Text)) { MessageBox.Show("Please specify IP camera user name and password."); return; } onvifControl = new ONVIFControl(); var result = await onvifControl.ConnectAsync(edONVIFURL.Text, edONVIFLogin.Text, edONVIFPassword.Text); if (!result) { onvifControl = null; MessageBox.Show("Unable to connect to ONVIF camera."); return; } var deviceInfo = await onvifControl.GetDeviceInformationAsync(); if (deviceInfo != null) { lbONVIFCameraInfo.Text = $"Model {deviceInfo.Model}, Firmware {deviceInfo.Firmware}"; } cbONVIFProfile.Items.Clear(); var profiles = await onvifControl.GetProfilesAsync(); foreach (var profile in profiles) { cbONVIFProfile.Items.Add($"{profile.Name}"); } if (cbONVIFProfile.Items.Count > 0) { cbONVIFProfile.SelectedIndex = 0; } edONVIFLiveVideoURL.Text = cbIPURL.Text = await onvifControl.GetVideoURLAsync(); edIPLogin.Text = edONVIFLogin.Text; edIPPassword.Text = edONVIFPassword.Text; onvifPtzRanges = await onvifControl.PTZ_GetRangesAsync(); await onvifControl.PTZ_SetAbsoluteAsync(0, 0, 0); onvifPtzX = 0; onvifPtzY = 0; onvifPtzZoom = 0; btONVIFConnect.Text = "Disconnect"; } finally { btONVIFConnect.Enabled = true; btONVIFConnect.Text = "Connect"; } } else { btONVIFConnect.Text = "Connect"; if (onvifControl != null) { onvifControl.Disconnect(); onvifControl.Dispose(); onvifControl = null; } } }