日期:2014-05-19  浏览次数:20729 次

请教达人关于C#多线程效率问题,非常着急!
此程序功能是通过WebService不停的刷新获取交易网站的多个交易数据,因此使用了多线程,但开发的过程中发现了一个奇怪的现象,在同时开一个或两个线程的时候,每个大概返回时间是1.2秒,3-4个线程的每个平均返回时间2.4秒,5-6个线程的每个平均返回时间大概是3.6秒,请教各位高人,是什么原因呢?
另外,开多个进程,即打开了多个应用程序,效率没有明显的下降(比如开了5个程序,每个进程开1-2个线程,那么平均返回时间基本也是1.2秒左右),也就是说,与网络和硬件无关。
请各位高人给点儿提示,希望能有解决办法,多谢,多谢!!!!!
代码如下:
                //   根据传入的多个marketID建立多个线程
                private   void   GetMarketMethod(ArrayList   marketIDAry)
                {
                        for   (int   i   =   0;   i   <   marketIDAry.Count;   i++)
                        {
                                Thread   thread   =   new   Thread(new   ThreadStart(GetMarketPrices));
                                thread.Priority   =   ThreadPriority.Highest;
                                thread.IsBackground   =   true;
                                thread.Start();
                        }
                }

                //   为了测试方便,这里仅仅调用了网站的登陆方法
                public   void   GetMarketPrices()
                {
                        GMethod.username   =   "aaa ";
                        GMethod.password   =   "ccc ";
                        GMethod.Login();

                        System.Diagnostics.Trace.WriteLine(marketID   +   ": "   +   DateTime.Now.TimeOfDay.ToString());

                        if(!IsStopCRY)
                                GetMarketPrices();
                }

------解决方案--------------------
你的 返回时间 是指什么? 那个函数的返回时间?
------解决方案--------------------
多线程在这里有用吗
好像没有
webserver本身就有异步调用
你在服务器用多线程根本就没有用
你只是在浪费资源而已
--
只要你调用webserver 服务器会创建线程来维护连接
多线程应在你客户端用


------解决方案--------------------
这可是webservice,本来就是多线程,你还要这样搞,何必。