2013-02-07 28 views
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回發。可能嗎?

回答

0

我知道我可以在客戶端使用UpdateProgress和javascript來使用我想要的所有東西,但我想要的是客戶端發送2個事件並等待2個答案,使2個PostBacks。

爲什麼?這似乎是一個任意的約束,使一個不必要的複雜任務變得不必要。

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(); 
} 
+0

'postback'應該是'RegisterStarupScript'中的字符串,並且好像不會執行'AnotherEventPB'。你可以解釋一下什麼時候它應該來到'AnotherEventPB'嗎? – Cynede

+0

@Heather,我正在做的是在一個回發完成執行後試圖調用AnotherEventPB。 –

+0

我想RegisterStarupScript應該讓按鈕第二次點擊? – Cynede

相關問題