延迟显示字符串异步
Display string async with delay
我正在尝试在网页中延迟显示一个字符串,以下是我尝试的方法,但该页面在延迟到期之前不会显示。
protected void Page_Load(object sender, EventArgs e)
{
Print().GetAwaiter().GetResult();
}
private async Task Print()
{
await Task.Run(async () =>
{
await Task.Delay(10000);
pr.InnerText = "this is a test...";
});
}
我建议从后端移除此延迟,并在前端使用 javascript 异步调用字符串的后端。您可以使用 setTimeout 和 ajax post 来完成此操作。
你写的是同步代码,“正确”的做法就是:
protected async void Page_Load(object sender, EventArgs e)
{
await Task.Delay(10000);
pr.InnerText = "this is a test...";
}
但是,这不能解决您的问题。您在服务器端代码生成上添加了延迟,因此您所成功的只是等待更长时间,直到所有内容都出现在客户端。您应该研究 AJAX 调用以在客户端异步加载数据,并尽快从服务器端发送整个页面框架。
编辑:或者,使用像 Blazor 这样的现代框架,这样的东西可以工作。 WebForms 已经死了 10 多年了。
我正在尝试在网页中延迟显示一个字符串,以下是我尝试的方法,但该页面在延迟到期之前不会显示。
protected void Page_Load(object sender, EventArgs e)
{
Print().GetAwaiter().GetResult();
}
private async Task Print()
{
await Task.Run(async () =>
{
await Task.Delay(10000);
pr.InnerText = "this is a test...";
});
}
我建议从后端移除此延迟,并在前端使用 javascript 异步调用字符串的后端。您可以使用 setTimeout 和 ajax post 来完成此操作。
你写的是同步代码,“正确”的做法就是:
protected async void Page_Load(object sender, EventArgs e)
{
await Task.Delay(10000);
pr.InnerText = "this is a test...";
}
但是,这不能解决您的问题。您在服务器端代码生成上添加了延迟,因此您所成功的只是等待更长时间,直到所有内容都出现在客户端。您应该研究 AJAX 调用以在客户端异步加载数据,并尽快从服务器端发送整个页面框架。
编辑:或者,使用像 Blazor 这样的现代框架,这样的东西可以工作。 WebForms 已经死了 10 多年了。