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);
}
}