C# 从另一个类调用异步方法

C# 从另一个类调用异步方法,c#,asynchronous,C#,Asynchronous,在我的主窗体中有一个异步方法,它通过从网站检索的数据填充网格 我创建了另一个类并调用了该函数,当我调试时,我可以看到流进入函数,从网站读取数据并填充网格,但实际上网格仍然是空的 代码示例如下。。请帮忙 Class MainForm { public async PopulateGrid() //goto website //get data //updategrid } Class newProject { MainForm mf = new M

在我的主窗体中有一个异步方法,它通过从网站检索的数据填充网格

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

代码示例如下。。请帮忙

Class MainForm
{

 public async PopulateGrid()

    //goto website
    //get data
    //updategrid

 }

 Class newProject
 {

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

 }

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

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

首先,一条建议:永远不要编写非事件处理程序的异步void方法。通过使用
async void
方法隐藏异常。另外,始终将
Async
后缀添加到异步方法中。以下是一个拟议的新定义:

public async Task PopulateGridAsync() {...}
您还应该等待所有异步调用,因此请确保编写:

await mf.PopulateGridAsync();
很可能您得到了一些异常,但由于void返回类型,它被隐藏了

更多信息:


更新网格的代码在哪里?调用一个异步成员方法和调用另一个类的异步方法完全没有区别。此外,在哪里显示表单(即调用mf.show()?)顺便问一下,您使用的是什么UI技术?WinForms,WPF?