2013-09-30 18 views
0

我有一个异步方法在我的主窗体中填充从网站的数据检索网格。从另一个类调用异步方法

我创建了另一个类并调用了该函数,当我调试时,我可以看到进入函数的流,从网站读取数据并填充网格,但在Reality网格中仍然为空。

代码示例是这个..请帮忙!

Class MainForm 
{ 

public async PopulateGrid() 

    //goto website 
    //get data 
    //updategrid 

} 

Class newProject 
{ 

    MainForm mf = new Mainform; 
    mf.PopulateGrid(); 

} 
+0

那是哪里更新电网的代码?调用异步成员方法与另一个类的异步方法绝对没有区别。此外,你在哪里显示表单(即调用mf.Show()?) –

+0

顺便说一下,你使用的是什么UI技术? WinForms,WPF? –

回答

0

我们必须在这里猜。您应该提供完整的方法签名和实际更新网格的代码。此外,何时以及如何显示表格?

一个猜测是你的代码显示使用PopulateGrid尚未填充结构的数据的网格。在接收数据之后,PopulateGrid应该强制更新网格本身,否则网格永远不会知道有新数据。

1

首先,一个建议的意见:从来没有写async void方法不是事件处理程序。您可以使用async void方法隐藏异常。此外,请始终将Async后缀添加到异步方法。下面是提出了新的定义:

public async Task PopulateGridAsync() {...} 

你也应该等待所有的异步调用,因此请确保你写:

await mf.PopulateGridAsync(); 

最有可能你有一些例外,但它是由于空隙隐藏返回类型。

更多信息: