private async void Button_Click(object sender, RoutedEventArgs e) { Debug.Assert(client != null); var button = (Button)e.OriginalSource; var tag = button.Tag as string; button.IsEnabled = false; if (tag == "go") { var settings = client.Settings; var result = await Op.TryAsync(Op.UsingAsync(new StreamWriter(settingsPath, false, Encoding.UTF8), settings.SaveAsync)); if (result.IsError) { MessageBox.Show(result.UnwrapError().Message, "Error while saving settings", MessageBoxButton.OK, MessageBoxImage.Error); } await client.StartAsync(); App.CurrentClient = client; var entrance = new Entrance(); entrance.Show(); Close(); } else if (tag == "image") { var dialog = new Microsoft.Win32.OpenFileDialog() { Filter = imageFilter }; if (dialog.ShowDialog(this) == true) { await Op.TryAsync(() => client.SetProfileImageAsync(dialog.FileName)); } } button.IsEnabled = true; }