private async Task ConfigItemChangedAsync(ConfigChangedItem configChangedItem) { if (string.IsNullOrEmpty(configChangedItem.value)) { return; } await Task.Run(async() => { switch (configChangedItem.key) { case ConfigItemKey.MainCamera: await RefreshExclusiveDataSourceAsync(ConfigItemKey.MainCamera, configChangedItem.value); _sdkService.SetDefaultDevice(1, configChangedItem.value); await _meetingConfigView.Dispatcher.BeginInvoke(new Action(() => { RefreshResolutionsAsync(configChangedItem); })); break; case ConfigItemKey.MainCameraResolution: string[] mainResolution = configChangedItem.value.Split('*'); _sdkService.SetVideoResolution(1, int.Parse(mainResolution[0]), int.Parse(mainResolution[1])); break; case ConfigItemKey.MainCameraCodeRate: _sdkService.SetVideoBitRate(1, int.Parse(configChangedItem.value)); break; case ConfigItemKey.SecondaryCamera: await RefreshExclusiveDataSourceAsync(ConfigItemKey.SecondaryCamera, configChangedItem.value); _sdkService.SetDefaultDevice(2, configChangedItem.value); await _meetingConfigView.Dispatcher.BeginInvoke(new Action(() => { RefreshResolutionsAsync(configChangedItem); })); break; case ConfigItemKey.SecondaryCameraResolution: string[] secondaryResolution = configChangedItem.value.Split('*'); _sdkService.SetVideoResolution(2, int.Parse(secondaryResolution[0]), int.Parse(secondaryResolution[1])); break; case ConfigItemKey.SecondaryCameraCodeRate: _sdkService.SetVideoBitRate(2, int.Parse(configChangedItem.value)); break; case ConfigItemKey.MainMicrophone: await RefreshExclusiveDataSourceAsync(ConfigItemKey.MainMicrophone, configChangedItem.value); _sdkService.SetDefaultDevice(3, configChangedItem.value); break; case ConfigItemKey.SecondaryMicrophone: await RefreshExclusiveDataSourceAsync(ConfigItemKey.SecondaryMicrophone, configChangedItem.value); _sdkService.SetDefaultDevice(5, configChangedItem.value); break; case ConfigItemKey.Speaker: _sdkService.SetDefaultDevice(4, configChangedItem.value); break; case ConfigItemKey.AudioSampleRate: _sdkService.SetAudioSampleRate(int.Parse(configChangedItem.value)); break; case ConfigItemKey.AudioCodeRate: _sdkService.SetAudioBitRate(int.Parse(configChangedItem.value)); break; case ConfigItemKey.LiveResolution: break; case ConfigItemKey.LiveCodeRate: break; case ConfigItemKey.Unknown: default: break; } SaveConfig(); }); }