我是 stackoverflow 的新手,但我每天都使用它。今天我需要你,因为我在任何地方都得不到这些信息。
我的问题是:我想为客户提供回调服务,但我不想回调他们在服务中调用的函数。(类似于订阅者/发布者)我想保存回调实例。然后我想要一个服务在我的服务中调用一个函数,该函数将触发回调(如下所示:callbacks.PrintMessage("Message"));)将回调实例保存在静态类的静态列表中。
调用 callback.function() 时,我收到此错误:“您正在使用 Disposed 对象”,因为我正在使用以下内容获取实例:OperationContext.Current.GetCallbackChannel<"callback interface">
我能做些什么来保存回调实例?
非常感谢。
佩德罗
代码:
//FUNCTION IN MY SERVICE
public void Subscribe()
{
var callback = OperationContext.Current.GetCallbackChannel<IMonitoringWebServiceCallback>();
callbacks.Add(callback);
callback = OperationContext.Current.GetCallbackChannel<IMonitoringWebServiceCallback>();
AlarmCallbackSingleton.Instance.AddCallback(callback);
//callback.PrintString("String"); //HERE IT WORKS! BUT I DONT WANT CALL HERE!
alarmInfoHandler = new AlarmInfoEventHandler(AlarmInfoHandler);
NewAlarmInfo += alarmInfoHandler;
}
//FUNCTION IN THE SAME SERVICE CALLED BY OTHER CLIENT
public void PublishAlarm(string alarm)
{
AlarmInfoEventArgs e = new AlarmInfoEventArgs();
e.Alarm = alarm;
NewAlarmInfo(this, e);
}
public void AlarmInfoHandler(object sender, AlarmInfoEventArgs e)
{
List<IMonitoringWebServiceCallback> callbacks = AlarmCallbackSingleton.Instance.GetCallbacks();
//EVERYONE THAT SUBSCRIBED SHOULD EXECUTE THIS (HERE I GET THE DISPOSED ERROR)
callbacks.ForEach(x => x.ShowString("String!"));
}