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
查看异常的堆栈跟踪。这应该给你一个很好的起点。 –