我怎么能改变我的页面的UI后异步调用
本文关键字:UI 异步 调用 能改变 我的 | 更新日期: 2023-09-27 18:10:07
我的页面上有异步调用,这大约需要1分钟。我需要在调用完成后更改UI。示例代码如下:
protected void Unnamed1_Click(object sender, EventArgs e)
{
apicasystemWPMCheckStatsService.CheckStatsServiceClient obj = new apicasystemWPMCheckStatsService.CheckStatsServiceClient();
string xmlOptionForGetCheckStats = "<options><mostrecent count='1'/><dataformat>xml</dataformat><timeformat>tz</timeformat></options>";
string checkId = "";
TextBox1.Text = TextBox1.Text + "test" + "'r'n";
obj.BeginGetCheckStats("admin@azuremonitoring", "Cu4snfPSGr8=", "PD6B685A0-006A-4405-951E-B24BB51E7966",
checkId, xmlOptionForGetCheckStats, new AsyncCallback(ONEndGetCheckStats), null);
TextBox1.Text = TextBox1.Text + "testdone" + "'r'n";
}
public void ONEndGetCheckStats(IAsyncResult asyncResult)
{
System.Threading.Thread.Sleep(3000);
TextBox1.Text = TextBox1.Text + "testcomplete" + "'r'n";
}
问题是,我怎么能得到"testcomplete"在我的文本框。由于我的页面在此异步调用....
后没有被发布回来我当前的O/p:测试testdone
预期:测试testdonetestcomplet
简单的回答:你不能那样做。因为一旦ASPX页面被发送到客户端,服务器就没有简单的方法来与该页通信。
你可以用AJAX做到这一点。在Unnamed1_Click
中,在Session
中设置一个"标志",表示异步操作正在等待。在你的ONEndGetCheckStats
设置"标志",表示操作已经完成。添加ASP。. NET页面方法(快速教程)到代码后面:
- 检查操作是否挂起,当 时返回
- 当操作完成时,从
Session
中删除所有内容并返回您需要的文本
null
在你的ASPX页面上,在Unamed1
(一个糟糕的按钮名称)按钮上连接一个客户端事件,该按钮启动一个客户端循环,使用该PageMethod检查状态。当状态不再是null
时,Javascript更改TextBox1
文本