У меня есть служба wcf, размещенная службой Windows (соединение именованного канала с другим приложением в Windows), настроенная на
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.PerSession)]
При каждом подключении клиента у меня есть конструктор, который получает идентификатор Windows вызывающего абонентаи затем получает обратный вызов.
Теперь в другом файле в службе Windows хостинга я перебираю всех пользователей на машине с Windows и хочу иметь возможность доступа к обратному вызову для этого конкретного пользователя.
Допустим, что пользователь A и пользователь B подключились к моей службе WCF, теперь в моем цикле for. Сначала я хочу отправить некоторые данные, которые я обработал в цикле, пользователю A, а затем в следующем цикле отправить данные пользователю B (другие данные, чем данныеотправлено пользователю A).
Как сохранить, отследить или сослаться на различные обратные вызовы?
ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.PerSession)]
public class WCFService: IWCFService
{
private readonly IWCFServiceCallback callback;
public WCFService()
{
var primaryIdentity = OperationContext.Current.ServiceSecurityContext.PrimaryIdentity;
var windowsIdentity = OperationContext.Current.ServiceSecurityContext.WindowsIdentity;
this.callback = OperationContext.Current.GetCallbackChannel<IStatusServiceCallback>();
}