C# 调用GetCallbackChannel()时如何仅获取一个实例?

C# 调用GetCallbackChannel()时如何仅获取一个实例?,c#,wcf,callback,instance,C#,Wcf,Callback,Instance,我的WCF服务有点问题。 实际上,用户可以订阅“发布”服务 我只是在做一个操作context.Current.GetCallbackChannel() 然后我将返回的对象添加到一个列表中(一种列表) 因为我希望在发布消息时通知我的客户,所以我只需调用所有订阅用户的回调 它工作得很好,但用户可以订阅两次,我不想订阅。 这就是为什么我要在(!theList.Contains(theCallbackChannelReturned))中执行以验证此约束 这里的事实是,每次我创建callbackchann

我的WCF服务有点问题。
实际上,用户可以订阅“发布”服务

我只是在做一个
操作context.Current.GetCallbackChannel()
然后我将返回的对象添加到一个列表中(一种
列表

因为我希望在发布消息时通知我的客户,所以我只需调用所有订阅用户的回调

它工作得很好,但用户可以订阅两次,我不想订阅。
这就是为什么我要在(!theList.Contains(theCallbackChannelReturned))中执行
以验证此约束

这里的事实是,每次我创建callbackchannel时,他似乎都会创建另一个新的IPPublishing实例,即使是在同一个客户端上

我不知道如何才能做到这一点。。。我发现
OperationContext.Current.InstanceContext
返回的哈希代码仍然相同,但是 GetCallbackChannel不


谢谢大家!

在客户端回调实现中,应执行以下操作:

[CallbackBehavior(
    ConcurrencyMode = ConcurrencyMode.Reentrant, 
    UseSynchronizationContext = false)]
public partial class ServiceClient : IMyService_Callback 
{ .... }