0
我想實現異步等待到我的應用程序,我遇到了一些困難十字UI線程異步與無效操作等待
那看起來容易但它不工作了這樣。我有下面的代碼,我將通過等待LoadAsync將執行WCF服務調用並返回數據,然後我可以加載任務窗體。然而,在等待呼叫時,我在任務表單的實例化過程中遇到了跨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
查看異常的堆棧跟蹤。這應該給你一個很好的起點。 –