我是新來的stackoverflow,但我每天都用它。今天我需要你,因爲我沒有得到這個信息。wcf回調+保存會話不操作上下文
我的問題是: 我想爲客戶端提供回調服務,但我不想回調他們在服務中調用的函數。 (類似訂閱者/發佈者) 我想保存回調實例。 然後我想要一個服務在我的服務中調用一個函數來觸發回調(如:callbacks.PrintMessage(「Message」));) 將回調實例保存在靜態類的靜態列表中。
當調用callback.function()即時得到這個錯誤:「您正在使用釋放的對象」 因爲即時得到這個實例:OperationContext.Current.GetCallbackChannel <「回調接口」>
能有什麼我確實保存了回調實例?
非常感謝。
佩德羅
CODE:
//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!"));
}
您能否發表評論? – GrandMasterFlush
對不起,我不習慣Stackoverflow,所以代碼標識不如我想要的那樣。我想你問的是在那裏,我想你可以理解。謝謝。 – cyp