从另一个类调用异步方法

本文关键字:异步方法 调用 另一个 | 更新日期: 2023-09-27 18:33:13

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

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

代码示例是这样的。.请帮忙!

Class MainForm
{
 public async PopulateGrid()
    //goto website
    //get data
    //updategrid
 }
 Class newProject
 {
    MainForm mf = new Mainform;
    mf.PopulateGrid();
 }

从另一个类调用异步方法

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

public async Task PopulateGridAsync() {...}

您还应该等待所有异步调用,因此请确保编写:

await mf.PopulateGridAsync();

很可能您遇到了一些异常,但由于 void 返回类型,它被隐藏了。

更多信息:

  • 提示 1:异步 void 仅适用于顶级事件处理程序

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

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