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_Click直到PostBack所有绑定事件都完成?

我知道我可以通过使用在客户端上使用我想要的一切UpdateProgressjavascript但我在这里想要的是客户端发送 2 个事件并等待 2 个答案,制作 2 个 PostBacks。是否可以?

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 个 PostBacks。

为什么?这似乎是一个任意约束,使原本微不足道的任务变得不必要地复杂。

于 2013-02-07T10:51:13.150 回答