[ServiceContract] public interface IService1 { [OperationContract] void MyOperation1(); } [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession,ConcurrencyMode=ConcurrencyMode.Multiple)] public class service1 : IService1 { public service1() { Console.WriteLine("creating instance"); } public void MyOperation1() { Console.WriteLine("starting.."); Console.WriteLine(System.Threading.Thread.CurrentThread.ManagedThreadId); Thread.Sleep(1000); Console.WriteLine("Ending.."); } }
static void Main(string[] args) { Thread[] t = new Thread[10]; NetTcpBinding myBinding = new NetTcpBinding(); EndpointAddress myEndpoint = new EndpointAddress("net.tcp://localhost:8000/MyService"); ChannelFactory<IService1> myChannelFactory = new ChannelFactory<IService1>(myBinding, myEndpoint); IService1 instance = myChannelFactory.CreateChannel(); for (int i = 0; i < 10; i++) { t[i] = new Thread(new ThreadStart(delegate() { instance.MyOperation1(); })); } for (int i = 0; i < 10; i++) { t[i].Start(); } }