作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要调用多个异步方法,并在其中调用另一个异步方法。让我演示一下
private async void button1_Click(object sender, EventArgs e)
{
for(int i = 0; i< 100; i++)
{
await Method1();
}
}
public async Task Method1()
{
await Task.Delay(3*1000);
await Method2();
}
public async Task Method2()
{
await Task.Delay(10*1000);
}
我的问题是,for 语句仅在等待 Method2 开始后才激活迭代,而我想要的是一次性创建 100 个任务。其他一切都将异步完成。
最佳答案
我认为您对“等待”的含义感到困惑。 “await”的意思是“开始异步处理这件事情,当它滴答作响时,回到windows消息循环并继续处理消息,以便UI不断重新绘制。当异步任务完成时,拿起我等待的代码”。
所以当你在这样的循环中await
时,你是在说:
如果这不是您想要的,那么不要等待任务。如果您想启动一百个并发运行的任务,那么启动一百个任务并且不要等待它们中的任何一个。为什么点击处理程序中有 any await?
关于c# - 如何在不停止的情况下在另一个异步方法中创建调用异步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16201826/
我是一名优秀的程序员,十分优秀!