繁体   English   中英

ASP.NET C#:如何在繁琐的逻辑操作之前正确使用async-await显示标签?

[英]ASP.NET C#: How do i properly use async-await to show a label before heavy logic?

我试图简单地显示一个标签,该标签向用户显示该应用程序正在处理某些数据。 我正在尝试做的分解:

  1. 用户点击按钮
  2. 标签上显示“正在加载数据...”
  3. 执行方法
  4. 等待方法
  5. 现在,第2步中的标签应显示“完成上传!”

我可以完成除步骤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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM