void Recieved_DialogMessage(DialogOptionInfo message) { Dispatcher.InvokeAsync(async () => { var res = await this.ShowMessageAsync(message.Title, message.Message, message.Style, message.Settings); message.CallbackTaskSource.SetResult(res); }); }
async Task Activate() { try { await _syncerActivities.WaitAsync().ConfigureAwait(false); if (IsActive == false) return; SelectedIndex = 0; IsLoading = true; if (await _accountModel.Activate().ConfigureAwait(false)) { UserName = _accountModel.MyProfile.Name; UserIconUrl = await DataCacheDictionary.DownloadImage( new Uri(_accountModel.Builder.IconUrl .Replace("$SIZE_SEGMENT", "s38-c-k") .Replace("$SIZE_NUM", "80"))).ConfigureAwait(false); } else { //例外発生時はreturnされずにここまで実行される var message = new DialogOptionInfo( "Error", "ストリームの初期化に失敗しました。ネットワークの設定を確認して下さい。", style: MessageDialogStyle.AffirmativeAndNegative, setting: new MetroDialogSettings() { AffirmativeButtonText = "再接続", NegativeButtonText = "別のアカウントを使う" }); Messenger.Default.Send(message); switch (await message.CallbackTask.ConfigureAwait(false)) { case MessageDialogResult.Affirmative: var tsk = Activate(); break; case MessageDialogResult.Negative: _manager.IsAccountSelectorMode = true; _manager.SelectedPageIndex = -1; break; } } } finally { IsLoading = false; _syncerActivities.Release(); } }
public void Initialize() { Task.Run(async () => { if (IsInDesignMode) { // Code runs in Blend --> create design time data. } else if (await _accountManagerModel.Initialize().ConfigureAwait(false) == false) { var message = new DialogOptionInfo( "Error", "アカウント一覧の読み込みに失敗しました。ネットワークの設定を確認して下さい。", setting: new MetroDialogSettings() { AffirmativeButtonText = "再接続" }); Messenger.Default.Send(message); var tmp = message.CallbackTask.ContinueWith(tsk => Initialize()); } }); }