1

我有一个服务对象,它的方法具有下面提到的回调实现

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); 

这正在失败......我错了,是回调需要在 Invoke 中完成

4

1 回答 1

0

得到它的工作... [CallbackBehavior(ConcurrencyMode=ConcurrencyMode.Multiple,UseSynchronizationCon‌​text=false)] 需要为 wpf 或 winform 应用程序添加属性,这与同步上下文有关。感谢您的意见。

于 2012-11-20T03:38:36.010 回答