Я пытаюсь реализовать асинхр ждать в моем приложении, и я бегу в некоторые трудностиCross UI поток недопустимая операция с асинхронным ждут
в том, что выглядит легко, но это не работает, как таковой. У меня есть код, ниже которого я мог бы ожидать, что LoadAsync выполнит вызов службы WCF и вернет данные, после чего я смогу загрузить форму «Задачи». Однако с вызовом wait я получаю исключение перекрестного ui потока при инстанцировании формы Задачи. Если я уйду, то он будет работать. Что я делаю не так?
if (!Core.Tasks.IsLoaded)
{
await Core.Tasks.LoadAsync();
}
Core.ShowWait("Opening Tasks");
TasksForm frm = new TasksForm() { MdiParent = Core.MainMDIWindow, CurrentViewName = Core.CurrentUser.UserProfile.TasksLastViewName }; // <-- error on this line
Метод LoadAsync является:
public override Task LoadAsync(bool includeDeleted = false)
{
return Task.Run(async() =>
{
Core.Logger.EnterMethod("_TasksData.Load");
try
{
DataSet = Core.LogbookProData.Tasks.GetTasks(DataUserID, includeDeleted);
LoadCompleted();
dsTasks cacheData = await Cache.LoadAsync(ConvertTimeZone);
if (cacheData != null)
MergeDataSets(DataSet, cacheData);
InitializeLayouts();
}
catch (Exception ex)
{
Core.Logger.LogException("_TasksData.Load", ex);
}
finally
{
Core.Logger.LeaveMethod("_TasksData.Load");
}
});
}
Thx - Я попытался удалить Task.Run, но это не имело никакого значения. Очень грубая ошибка, чтобы грустно отследить. – Neal
Посмотрите на трассировку стека для исключения. Это должно дать вам хорошую отправную точку. –