控制台客户端代码如下:
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 for (int i = 0; i < 10; i++) 6 { 7 Thread thread = new Thread(new ThreadStart(DoWork)); 8 thread.Start(); 9 } 10 Console.ReadLine(); 11 } 12 13 public static void DoWork() 14 { 15 16 string result; 17 Console.WriteLine("客户端线程" + Thread.CurrentThread.GetHashCode() + "开始:" + DateTime.Now.ToString("hh:mm:ss ms")); 18 19 20 ServiceReference1.ServiceClient client = new ServiceReference1.ServiceClient(); 21 lock (client) 22 { 23 result = client.GetData(); 24 Console.WriteLine("客户端线程" + Thread.CurrentThread.GetHashCode() + "结束:" + DateTime.Now.ToString("hh:mm:ss ms") + " 返回:" + result); 25 client.Close(); 26 } 27 } 28 29 }
WCF服务代码:
1 namespace WCFLib 2 { 3 // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的类名“Service1”。 4 [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple, UseSynchronizationContext = false), CallbackBehavior(UseSynchronizationContext = false)] 5 public class Service : IService 6 { 7 Service() 8 { 9 Console.WriteLine("新的服务端实例被创建:", DateTime.Now); 10 } 11 12 public string GetData() 13 { 14 string iString; 15 DateTime iDateTime; 16 17 iDateTime = DateTime.Now; 18 iString = "服务端线程" + Thread.CurrentThread.ManagedThreadId + "创建:" + iDateTime.ToString(); 19 Console.WriteLine(iString); 20 //Thread.Sleep(5000); 21 return iString; 22 } 23 24 25 } 26 }
运行结果:
我的问题是 为什么WCF端的线程不是10个不同的线程呢?
进10个人来吃饭,不一定要每个人一个服务员。wcf服务端有单调服务(Call Service),会话服务(Sessionful Service),单例服务(Singleton Service).
兄弟,你这个问题解决的怎么样了啦。
我也遇到了这样的问题。
你在服务端中,将线程Thread.sleep一段时间试试