2012-11-19 50 views
1

我有低於IO如何調用成員,如果成員有回調實現

public string GetMacName() 
{ 
string value = System.Environment.MachineName.ToString(); 
msgCallback = OperationContext.Current.GetCallbackChannel<IServiceCallBack>(); 
msgCallback.Notify(value); 
return value; 
} 

提到的方法具有回調實現我創建了一個DuplexChannelfactory和我的客戶得到了服務對象服務對象。現在,隨着服務對象我檢索類型爲 客戶端:

DuplexChannelFactory<IServiceOne> factory = new DuplexChannelFactory<IServiceOne>(callbackInstance, new NetTcpBinding(), "uri"); 
proxyObject = factory.CreateChannel(); Type t= proxyObject.GetType(); 

我已經實現IServiceOneCallback方法在客戶端

public string Notify(string value) 
{ 
Notification=value; 
} 

我調用方法GetMacName()如下所述:

t.Invoke("GetMacName", BindingFlags.Default | BindingFlags.InvokeMethod, null, proxyObject, args); 

這是越來越失敗......哪裏錯了,是回調需要做的事情在調用

+0

爲什麼不能調用proxyObject.GetMacName()? –

+0

將異常堆棧跟蹤添加到您的問題。 –

+0

實際上這是要求,我需要傳遞方法名稱和從對象動態調用,奇怪我創建了一個單獨的項目,並在那裏工作....相同的代碼...感謝您的輸入,需要檢查問題出在哪裏。 :( – Shabana

回答

0

得到它的工作... [需要爲wpf或winform應用程序添加[CallbackBehavior(ConcurrencyMode = ConcurrencyMode.Multiple,UseSynchronizationCon text = false)]]屬性,這與同步上下文有關。感謝您的輸入。

+0

請糾正我,如果我錯了,這似乎工作,雖然... – Shabana