这是我的WCF服务。我想通知 多个订户并进行一些更新并异步执行。我怎么做?WCF异步通知用户
// Callback contract
public interface IMyServiceCallback
{
[OperationContract]
void Notify(String sData);
}
public class MyService:IMyService
{
List<IMyServiceCallback> _subscribers = new List<IMyServiceCallback>();
// This function is used to subscribe to service.
public bool Subscribe()
{
try
{
IMyServiceCallback callback = OperationContext.Current.GetCallbackChannel<IMyServiceCallback>();
if (!_subscribers.Contains(callback))
_subscribers.Add(callback);
return true;
}
catch
{
return false;
}
}
// this function is used to notify all the subsribers
// I want ForEach to be asynchronous.
public void OnGetMsg(string sData)
{
_subscribers.ForEach(
callback =>
{
if (((ICommunicationObject)callback).State == CommunicationState.Opened)
{
callback.Notify(sData); //THIS OPERATION
}
else
{
_subscribers.Remove(callback);
}
});
}
}
"MSDN: WCF Publisher/Subscriber Client crashing" is strongly related to my problem.
我按照Mini Webcast在创建该服务。
另外,我是谁认为WCF是在痛苦中唯一一个颈部? (你知道我的意思。) – 2011-04-25 08:33:51
你的代码在哪里?异常或逻辑(算法)问题? – 2011-04-25 08:47:54
如果其中一个用户死了,那么'callback.Notify()'会出现超时异常。由于向其他用户发送的通知延迟了。 – 2011-04-25 08:50:38