2014-01-14 93 views
0

有大約無過載爲 '' 匹配委託 'System.EventHandler'

ParameterizedThreadStart op = new ParameterizedThreadStart(new EventHandler(this.SendResultToClient)); 

無過載錯誤 'SendResultToClient' 匹配delegeate 'System.EventHandler'

任何幫助

public void Add(double num) 
    { 
    double result = (num+10); 
      //Gets a channel to the client instance that called the current operation. 
      callback = OperationContext.Current.GetCallbackChannel<IAddNumDuplexCallback>(); 
      //Represents the method that executes on a Thread. 
      ParameterizedThreadStart op = new ParameterizedThreadStart(new EventHandler(this.SendResultToClient)); 
      Thread t = new Thread(op); 
      //t.IsBackground = true; 
      t.Start(result); 
     } 

     //The function 
     public void SendResultToClient(double result) 
     { 
      Thread.Sleep(500); 
      callback.Result(result); 
     } 
    } 
} 
+3

? –

+0

這是一個例子,關於WCF4中的雙工合同, – KekoSha

+1

顯然'Thread t = new Thread((()=> SendResultToClient(result);}'將會取消EventHandler的更多參數,但是WPF上下文改變了這個。問題中的上下文更清楚 – doctorlove

回答

2

您以錯誤的方式使用ParameterizedThreadStart

ParameterizedThreadStart是接受一個對象類型參數並返回void的方法的委託。

您需要更改您的SendResultToClient方法:

public void SendResultToClient(object data) 
{ 
    double result = (double)data; 
    Thread.Sleep(500); 
    callback.Result(result); 
} 

,並以這種方式啓動線程:你爲什麼要使用一個EventHandler

ParameterizedThreadStart op = SendResultToClient; 
Thread t = new Thread(op); 
t.Start(result); 
相關問題