}
}
- private void doShowUserStatus(TwitterUser user)
+ private async void doShowUserStatus(TwitterUser user)
{
- using (var userinfo = new UserInfoDialog(this, this.tw))
+ using (var userDialog = new UserInfoDialog(this, this.tw))
{
- userinfo.DisplayUser = user;
- userinfo.ShowDialog(this);
+ var showUserTask = userDialog.ShowUserAsync(user);
+ userDialog.ShowDialog(this);
+
this.Activate();
this.BringToFront();
+
+ // ユーザー情報の表示が完了するまで userDialog を破棄しない
+ await showUserTask;
}
}
public partial class UserInfoDialog : OTBaseForm
{
private TwitterUser _displayUser;
- public TwitterUser DisplayUser
- {
- get { return this._displayUser; }
- set
- {
- if (this._displayUser != value)
- {
- this._displayUser = value;
- this.OnDisplayUserChanged();
- }
- }
- }
private readonly TweenMain mainForm;
private readonly Twitter twitter;
this.LabelScreenName.Font = this.ReplaceToGlobalFont(this.LabelScreenName.Font);
}
- protected virtual async void OnDisplayUserChanged()
+ public async Task ShowUserAsync(TwitterUser user)
{
- if (this._displayUser == null)
+ if (user == null || user == this._displayUser)
return;
- var user = this._displayUser;
+ this._displayUser = user;
this.LabelId.Text = user.IdStr;
this.LabelScreenName.Text = user.ScreenName;
}
else
{
+ Task showUserTask = null;
+
if (TextBoxName.Modified ||
TextBoxLocation.Modified ||
TextBoxWeb.Modified ||
this.TextBoxLocation.Text,
this.TextBoxDescription.Text));
- this.DisplayUser = user;
+ showUserTask = this.ShowUserAsync(user);
}
catch (WebApiException ex)
{
ButtonEdit.Text = ButtonEditText;
IsEditing = false;
+
+ if (showUserTask != null)
+ await showUserTask;
}
this.ButtonEdit.Enabled = true;
});
if (user != null)
- this.DisplayUser = user;
+ await this.ShowUserAsync(user);
}
catch (WebApiException ex)
{