【发布时间】:2012-11-16 15:59:06
【问题描述】:
我正在使用任务在单独的线程上获取数据,以便用户可以继续使用应用程序。我发现的问题是我的数据到我的网格的实际绑定也需要几秒钟。如何将我的数据绑定到与 FetchData() 调用相同的线程上?
Task<List<SomeData>> getData = new Task<List<SomeData>>(() =>
{
List<SomeData> myData = FetchData(); // Expensive!
return myData;
});
getData.Start();
Task processData = getData.ContinueWith(data =>
{
grid.DataSource = data; // Takes a few second so now the UI thread is disrupted
}, TaskScheduler.FromCurrentSynchronizationContext()); // UI thread :(
【问题讨论】:
-
你在用什么?窗体? WPF?还有什么?
-
WinForms。抱歉,忘记提了。
-
您确定没有延迟执行问题吗?数据中有多少个对象?
-
例如,如果您使用启用延迟加载的 ORM,实际绑定将是当它调用加载您未急切加载的子实体时
-
我没有使用 ORM。它只是绑定到网格的一些基本对象的列表。有几千行......因此延迟。
标签: c# winforms parallel-processing task-parallel-library