[英]ASP.NET C#: How do i properly use async-await to show a label before heavy logic?
我试图简单地显示一个标签,该标签向用户显示该应用程序正在处理某些数据。 我正在尝试做的分解:
我可以完成除步骤2之外的所有操作。我的代码在执行该方法之前不会显示“正在加载数据...”,它只是运行方法并显示“完成上传!”。 执行后。
我希望弄清楚为什么我的代码未执行第2步,以及如何更改代码以在标签中显示初始的“正在加载数据...”。
谢谢,麻烦您了!
这是我的按钮单击:
protected async void Sync_Click(object sender, EventArgs e)
{
lblProgress.Text = "Loading data...";
Task<String> task = new Task<string>(SyncPath);
task.Start();
String result = await task;
lblProgress.Text = result;
}
这是我的方法:
private String SyncPath()
{
// do heavy stuff
return "Done Upload!";
}
我希望用户在标签中看到初始的“正在加载数据...”文本,然后在上述标签中执行代码,然后执行“完成上传”。 但是,用户看不到初始的“正在加载数据...”,而只看到代码执行后的“完成上传”。
您的问题是该页面只有在重新加载后才能更新。 Sync_Click
可以按Sync_Click
工作,但是它在服务器上运行,并且页面不会更新,因为它在客户端上运行。
您需要有一个ajax 更新面板 ,标签应该放在其中。 然后,您可以更新标签文本,而无需重新加载整个页面。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.