-1

asp.net で async と await を使用しようとしています。簡単にするために、私の目的は非同期的にメソッドを呼び出し、戻ったらUIのラベルのデータを更新することです。ここにdefault.aspxがあります

<form id="form1" runat="server">
        <div>
            <asp:Button runat="server" Text="click me" OnClick="asyncbtn_Click" id="asyncbtn" /><br />
             <asp:TextBox runat="server" /><br />
            <asp:Label runat="server" Text="[Result label]" ID="resultLabel"/>
            <asp:Label runat="server" Text="[Result label]" ID="Label1"/>
        </div>
    </form>

コードビハインドファイル...

protected void asyncbtn_Click(object sender, EventArgs e)
        {
            RegisterAsyncTask(new PageAsyncTask(DoSomethingAsync));
        }  

        public async Task<int> DoSomethingAsync()
        {
            await Task.Delay(10000);
            resultLabel.Text = 20.ToString();
            await Task.Delay(5000);
            Label1.Text = 30.ToString();
            return 0;
        }

ボタンをクリックすると、ブラウザは DoSomethingAsync メソッド全体が完了するまで待機します。したがって、これは非同期呼び出しではなく同期呼び出しになると思います。

ここで何が問題なのか誰にも教えてもらえますか。

4

2 に答える 2

1

ブログで説明しているように、asyncは HTTP プロトコルを変更しません。これについての 1 つの考え方は、ブラウザではなくawaitASP.NET ランタイムに譲歩するというものです。

詳細については、ASP.NETに関する MSDN の記事をasync参照してください。

于 2015-03-26T14:01:29.933 に答える
0

Async と Await は、複数の Web リクエストを並行して処理するために使用されます。これらのメソッドは、要求がサーバーに到達し、他の着信 Web 要求と競合し始めると開始されます。

これらを非同期 Web リクエストと間違えないでください。これは ajax を使用して実現できます。

于 2015-03-26T12:44:28.613 に答える