2012-11-19 44 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