0

私はコード付きのボタンを持っています:

protected void Button1_Click(object sender, EventArgs e) {
    Label1.Text = "Searching for services";
    UpdatePanel1.Update();
    }

さらに、サービスが見つかったときに何かを表示する必要があるため、別のイベントを追加します。

    Button1.Click += (s, k) => {
        discovery.FindAlreadyRegisteredServices();
        discovery.discoveryClient.FindCompleted += FoundEvent;
        auto[1].WaitOne();
        UpdatePanel1.Update();
    };

これは遅いです(そしてAutoResetEventによって制御されます)

protected void FoundEvent(object sender, FindCompletedEventArgs e) {
    Label1.Text = "Found " + ((discovery.endpoints.Count > 0) ? discovery.endpoints[0].Address.ToString() : "nothing");
    auto[1].Set();
}

問題は、後で実行され、すべての結合イベントが終了するまでButton1.Click += (s, k) =>実行されないため、まったく意味がないことです。Button1_ClickPostBack

UpdateProgressandを使用してクライアントで必要なものをすべて使用できることはわかっていますjavascriptが、ここで必要なのは、クライアントが 2 つのイベントを送信し、2 つの応答を待って、2 つのポストバックを作成することです。出来ますか?

4

2 に答える 2

1
protected void Button1_Click(object sender, EventArgs e) {
    Label1.Text = "Searching for services";
    //change postback hooks
    Button1.Click -= Button1_Click;
    Button1.Click += AnotherEventPB;
    ScriptManager.RegisterStarupScript(this, GetType(), postback, "__doPostBack();", true);
    UpdatePanel1.Update();
}

protected void AnotherEventPB(object sender, EventArgs e)
{
        //reset postback hooks
        Button1.Click -= AnotherEventPB; 
        Button1.Click += Button1_Click;
        discovery.FindAlreadyRegisteredServices();
        discovery.discoveryClient.FindCompleted += FoundEvent;
        auto[1].WaitOne();
        UpdatePanel1.Update();
}
于 2013-02-07T10:55:16.890 に答える
0

UpdateProgress と JavaScript を使用してクライアントで必要なものをすべて使用できることはわかっていますが、ここで必要なのは、クライアントが 2 つのイベントを送信し、2 つの応答を待って、2 つのポストバックを作成することです。

なんで?ささいなタスクを不必要に複雑にする恣意的な制約のように思えます。

于 2013-02-07T10:51:13.150 に答える