3

我正在使用任务在单独的线程上获取数据,以便用户可以继续使用应用程序。我发现的问题是我的数据到我的网格的实际绑定也需要几秒钟。如何将我的数据绑定到与 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 :(
4

1 回答 1

1

使用一个怎么样BackgroundWorker?只需将 backgroundworker 从工具箱拉到表单中,然后使用 BackgroundWorker 的 RunWorkerAsync 调用启动该进程。

在这种情况DoWork下,进行数据提取。

在这种情况RunWorkerCompleted下,将结果绑定到网格。

于 2012-06-21T07:14:24.263 回答