2010-04-14 73 views
0

我與它有一些方法,這些方法與完成後的事件過程異步調用的API工作。我可以執行這些方法,但事件過程似乎不會觸發。注意:我昨天發佈了一個類似的問題,但直到很晚才發佈代碼。我希望有人能夠發現我出錯的地方C#異步事件過程不火

public partial class Window1 : Window 
{ 
ClientAppServer newServer= new ClientAppServer(); 

public Window1() 
{ 
    InitializeComponent(); 

    //the event thats supposed to fire 
    newServer.ReceiveRequest += ReadServerReply; 
} 


private void ReadServerReply(RemoteRequest rr) 
{ 
    //this point is never reached 
    MessageBox.Show("reading server reply"); 
    if ((rr.TransferObject) is Gateways) 
    { 
     MessageBox.Show("you have gateways!"); 
    } 
} 


private void login() 
{ 
//API docs says this is an asynchronous call   
newServer.RetrieveCollection(typeof(Gateways), true); 

} 


private void button1_Click(object sender, RoutedEventArgs e) 
{ 
    this.login(); 
} 
+0

我還要補充一點,我試圖非GUI操作添加到事件過程,如創建一個文本文件,並且也不起作用。我認爲這個事件根本不會發射。 – 2010-04-14 15:54:50

+1

很難說沒有看到ClientAppServer的源代碼有什麼問題。你有嗎?表面上看來,這個事件似乎沒有被提出。 – 2010-04-14 18:26:25

回答

1

它是哪個API?這可能會幫助我們解決問題。

從您發佈的代碼,它看起來並不像RetrieveCollection方法有什麼用接收請求 - 它看起來並不像它應該觸發。

在建議方面,我假設你已經嘗試在事件處理程序上設置斷點。如果你的庫沒有源代碼,你可以使用Reflector來查看你的庫正在做什麼,並檢查它是否應該觸發事件。

http://www.red-gate.com/products/reflector/