首页 新闻 搜索 专区 学院

多线程调用WCF函数的问题

0
悬赏园豆:5 [已解决问题] 解决于 2013-03-04 13:49

控制台客户端代码如下:

View Code
 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服务代码:

View Code
 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个不同的线程呢?

eagle_wolf的主页 eagle_wolf | 初学一级 | 园豆:144
提问于:2013-02-25 21:18
< >
分享
最佳答案
1

进10个人来吃饭,不一定要每个人一个服务员。wcf服务端有单调服务(Call Service),会话服务(Sessionful Service),单例服务(Singleton Service). 

收获园豆:5
arg | 小虾三级 |园豆:1047 | 2013-02-26 14:25
其他回答(2)
0

兄弟,你这个问题解决的怎么样了啦。

 

我也遇到了这样的问题。

TimYang | 园豆:12 (初学一级) | 2013-07-27 16:50
0

你在服务端中,将线程Thread.sleep一段时间试试

Songlw | 园豆:110 (初学一级) | 2013-11-29 09:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册