2013-04-12 118 views
0

這僅僅是一個代碼沒有重載「方法」匹配委託「委託」

幾行下來,我想轉換一個Int翻一番的一部分。但事實上,雙是一個數組,使得它很難...

我需要包括「我」就像我在前面的功能一樣,但它不會工作,我碰到下面的錯誤;

沒有重載「webKoordx_OpenReadComplete」匹配委託「System.Net.OpenReadCompletedEventHandler」

如果您知道任何解決方案,或者能夠看到的東西我已經錯過了,請幫幫我!

private void getKoord(int i) 
    { 
     string stringKoX = "http://media.vgy.se/kristoferpk/spots/" + i + "/koordinatx.html"; 
     string stringKoY = "http://media.vgy.se/kristoferpk/spots/" + i + "/koordinaty.html"; 

     var webKoordx = new WebClient(); 
     webKoordx.OpenReadAsync(new Uri(stringKoX)); 
     webKoordx.OpenReadCompleted += new OpenReadCompletedEventHandler(webKoordx_OpenReadComplete); 

     var webKoordy = new WebClient(); 
     webKoordy.OpenReadAsync(new Uri(stringKoY)); 
     webKoordy.OpenReadCompleted += new OpenReadCompletedEventHandler(webKoordy_OpenReadComplete); 
    } 

    void webKoordx_OpenReadComplete(object sender, OpenReadCompletedEventArgs e, int i)//<<----- 
    { 
     try 
     { 
      using (var reader = new StreamReader(e.Result)) 
      { 
       koordx = reader.ReadToEnd(); 
       koordx_d[i] = Convert.ToDouble(koordx); 
      } 
     } 
     catch 
     { 
      MessageBox.Show("Kan ej ansluta"); 
      MessageBox.Show("Kontrollera din anslutning"); 
     } 
    } 
    void webKoordy_OpenReadComplete(object sender, OpenReadCompletedEventArgs e)//<<----- 
    { 
     try 
     { 
      using (var reader = new StreamReader(e.Result)) 
      { 
       koordy = reader.ReadToEnd(); 
       koordy_d[i] = Convert.ToDouble(koordy); 
      } 
     } 
     catch 
     { 
      MessageBox.Show("Kan ej ansluta"); 
      MessageBox.Show("Kontrollera din anslutning"); 
     } 
    } 
+0

使用lambda表達式。 – SLaks

+0

請解釋一下,如何以及在哪裏? –

回答

1

您不能將額外的信息傳遞給這樣的事件處理程序。

相反,你可以添加處理該事件,並從其closure通過你的額外信息的lambda表達式:

webKoordx.OpenReadCompleted += (sender, e) => MyMethod(e.Result, i); 
+0

好的,我明白了! 但是,我在哪裏輸入剛纔寫的代碼? 我從來沒有聽說過lambda表達式,這就是爲什麼我很困惑。(是的,我試圖谷歌它) –

相關問題