gpt4 book ai didi

asp.net - 使用 WebForms 和 .NET 4.5 等待/异步的异步 GUI

转载 作者:行者123 更新时间:2023-12-01 23:51:12 26 4
gpt4 key购买 nike

我一直在寻找任何使用 ASP.NET WebForms 构建异步接口(interface)的简单示例。也就是说,当 async 方法完成时,await 将呈现。

这是我一直在看的例子之一,How and When to use `async` and `await` .我一直在寻找的实现看起来像这样

protected async void button1_Click(object sender, EventArgs e)
{
// Render when done
textBox1.Text += await WaitAsynchronouslyAsync(RandomNumber(2000, 4000));

// Render when done
textBox1.Text += await WaitAsynchronouslyAsync(RandomNumber(100, 1000));
}

public async Task<string> WaitAsynchronouslyAsync(int delay)
{
await Task.Delay(delay);
return string.Concat(delay, "; ");
}
private int RandomNumber(int min, int max)
{
Random random = new Random();
return random.Next(min, max);
}

然而,当一切都完成时,这将始终呈现,但同时。在上面的示例中,所需的结果将是第二次调用 WaitAsynchronouslyAsync 以在第一次调用之前呈现,因为它总是会减少延迟。

或者甚至可以使用网络表单吗?我确实知道如何使用 webapi、websockets 和诸如此类的东西在 JavaScript 中做到这一点,这不是我目前想要的解决方案。

最佳答案

正如我在我的博客中描述的那样,async does not change the HTTP protocol .

HTTP 为每个请求提供一个响应。因此,当 HTTP 请求到达时,它必须在发送响应之前执行您的页面完成

在 ASP.NET 世界中,await 不会让步给客户端/浏览器。相反,它屈服于 ASP.NET 运行时。 ASP.NET 在看到您的处理全部完成之前不会发送响应。

如果您想动态更新页面(或部分呈现页面),则需要使用适当的技术(SignalR、UpdatePanel 等)自行完成。

关于asp.net - 使用 WebForms 和 .NET 4.5 等待/异步的异步 GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26370504/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com