我正在运行 ASP.NET 4.0 WEBFORMS
这个问题困扰着我......我已经阅读了 SO 以及 MSDN 上的几个线程,但我认为我错过了这个异步拼图的最后一块......
我想要完成的是异步更新标签,作为测试我设置了一个按钮和一个标签。然后我有一个循环,每次循环达到等于或大于 7 的数字时从 0 到 9 计数,我希望它用数字更新标签。
我已经让它同步工作,但是标签最终将只显示最后一个数字。我已经设置了所有方法并连接了事件,但即使我使用 beginInvoke 和 asyncresult,它也不会更新。
目前它根本没有更新,大量的测试让我回到了原点?我设法让它更新,我什至尝试使用 system.threading.thread.sleep(3000),看看它是否更新得很快,但这根本不起作用?
我很困惑有人对如何实现这一点有提示吗?
这是我的代码
首先我的柜台课
public class counter
{
public static event numberHandler FoundNumber;
public delegate void numberHandler(string position);
public void theAscendator()
{
for (int i = 0; i < 10; i++)
{
if (i >= 7)
{
string labelText = i.ToString();
if(FoundNumber != null)
{
FoundNumber.BeginInvoke(labelText, new AsyncCallback(this.SevenAndOver),null);
}
}
}
}
public void SevenAndOver(IAsyncResult ar)
{
FoundNumber.EndInvoke(ar);
}
}
现在我的主页(index.aspx)代码隐藏
public partial class index : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
private void index_FoundNumber(string position)
{
// Response.Write(position);
Label1.Text = position;
// throw new NotImplementedException();
}
protected void Button1_Click(object sender, EventArgs e)
{
counter counterClass = new counter();
counterClass.theAscendator();
counter.FoundNumber += new counter.numberHandler(index_FoundNumber);
}
}