111,096
社区成员




namespace Server
{
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession, ConcurrencyMode = ConcurrencyMode.Reentrant)]
public class Service1 : IService1
{
static List<ISomeCallbackContract> m_Callbacks = new List<ISomeCallbackContract>();
public void DoSomething()
{
//获取调用客户端的实例通道
ISomeCallbackContract callback = OperationContext.Current.GetCallbackChannel<ISomeCallbackContract>();
if (m_Callbacks.Contains(callback) == false) //确定某元素是否在List<T>(m_Callbacks)中。http://msdn.microsoft.com/query/dev11.query?appId=Dev11IDEF1&l=ZH-CN&k=k(System.Collections.Generic.List`1);k(TargetFrameworkMoniker-.NETFramework,Version%3Dv4.5);k(DevLang-csharp)&rd=true
{
m_Callbacks.Add(callback);
}
Thread.Sleep(5000); //模拟长时间运行
CallClients();
}
static public void CallClients()
{
Action<ISomeCallbackContract> invoke = delegate(ISomeCallbackContract callback)
{
callback.SomeCallbackMethod();
};
m_Callbacks.ForEach(invoke);
}
}
class Program //寄宿程序
{
static void Main(string[] args)
{
ServiceHost host = new ServiceHost(typeof(Service1));
host.Open();
Console.WriteLine("服务已启动!");
Console.Read();
}
}
}