У меня есть вопрос.У меня есть кнопка, с которой я запускаю ActivateItem
:
public void LoadTaskManagerPage()
{
this.ActivateItem(new TaskManagerViewModel(this.LoggedUser, this.repository));
if (this.LoggedUser.GetUserTask() != null)
{
this.IsActiveTaskButtonVisible = Visibility.Visible;
this.NotifyOfPropertyChange(() => this.IsActiveTaskButtonVisible);
}
}
Возможно ли hang
приложение и перейти только к if
заявлению, если ActivateItem
заканчивается?
Какждать окончания ActivateItem
в Caliburn.Micro?
РЕДАКТИРОВАТЬ:
Попытка что-то вроде:
public void LoadTaskManagerPage()
{
var taskManagerTask = Task.Run(() => this.ActivateItem(new TaskManagerViewModel(this.LoggedUser, this.repository)));
taskManagerTask.Wait();
if (!this.LoggedUser.GetUserTask().IsTaskTakenByUser())
{
this.IsActiveTaskButtonVisible = Visibility.Visible;
this.NotifyOfPropertyChange(() => this.IsActiveTaskButtonVisible);
}
}
С задачами, нокогда я нажимаю LoadTaskManagerPage()
, окно не отображается, приложение зависает навсегда
EDIT2
На основе моей проблемы на github, я обновилКалибровка на alpha 4.0
:
public void LoadTaskManagerPage()
{
this.ActivateItemAsync(new TaskManagerViewModel(this.LoggedUser, this.repository));
if (!this.LoggedUser.GetUserTask().IsTaskTakenByUser())
{
//logic
}
}
я изменила ActiveItem()
на ActiveItemAsync()
, но все же, она достигла оператора if
до закрытия активного элемента.используя async/await
сделать то же самое
EDIT3
Когда я делаю async/await
, он все равно работает, посмотрите на мой вид справа.Его нажали, User Control
не появляются.В то же время (даже когда мой User Control
не появляется) я слишком рано нажимаю на if
.Я хочу нажать на User Control
close.