首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

【CUP使用率100% 】关于每隔 100 毫秒 发出的 100 个异步Http请求,怎么提高速度和系统性能

2012-02-25 
【CUP使用率100% 】关于每隔 100 毫秒 发出的 100 个异步Http请求,如何提高速度和系统性能?classRequestStat

【CUP使用率100% 】关于每隔 100 毫秒 发出的 100 个异步Http请求,如何提高速度和系统性能?
class   RequestState
                {
                        public   HttpWebRequest   request;
                        public   int   roomid;
                        public   DateTime   sent;
                        public   RequestState(HttpWebRequest   r,   int   id)
                        {
                                sent   =   DateTime.Now;
                                request   =   r;
                                roomid   =   id;
                        }
                }
                void   HttpResponseReturned(IAsyncResult   ar)
                {
                        RequestState   rstate   =   (RequestState)ar.AsyncState;
                        HttpWebResponse   response   =   (HttpWebResponse)rstate.request.EndGetResponse(ar);
                        Console.WriteLine(string.Format( "收到{0}发出的异步Http请求(RoomID={1}) ",   rstate.sent,   rstate.roomid));
                        Encoding   enc   =   Encoding.GetEncoding(response.CharacterSet);
                        using   (Stream   rstream   =   response.GetResponseStream())
                        {
                                using   (StreamReader   reader   =   new   StreamReader(rstream,   enc))
                                {
                                        string   html   =   reader.ReadToEnd();
                                        /*
                                                处理html
                                        */
                                }
                        }



                }

                int   kksdf=0;
                const   int   roomidmax   =   100;
                const   int   roomidmin   =   1;
                const   string   urlbase   =   "http://community.csdn.net/Expert/ForumList.asp?typenum=1&roomid= ";//CSDN.net区

                void   Timer_Elapsed(object   sender,   ElapsedEventArgs   e)
                {
                        kksdf++;
                      //   this.toolStripStatusLabel2.Text   =   kksdf.ToString();
                        for   (int   i   =   roomidmin;   i   <=   roomidmax;   ++i)
                        {
                                //this.toolStripStatusLabel2.Text   =   DateTime.Now.ToString();
                                HttpWebRequest   request   =   (HttpWebRequest)WebRequest.Create(urlbase   +   i.ToString());
                                request.Method   =   "Get ";
                                RequestState   rstate   =   new   RequestState(request,   i);
                                request.BeginGetResponse(HttpResponseReturned,   rstate);
                        }
                }
                void   LoadMain()
                {
                        System.Timers.Timer   timerOut   =   new   System.Timers.Timer(100);
                        timerOut.Elapsed   +=   Timer_Elapsed;
                        timerOut.Start();
                        //Console.ReadKey();
                }

             
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++


汗,以上代码,启动winform项目后cpu使用率占100%   ?(控制台占用很小)


[解决办法]
用了DotNet那么多年,没发现ASP.NET有什么问题.
ASP.NET是重新设计的. 而且是经过严格测试.
虽然现在ASP.NET2.0了,但是我也是慢慢才明白ASP.NET1.0一些核心的东西.
我很佩服微软工程师的远见.

可以说DotNet容易上手,但是如果没有足够的经验,还是会遇到很多问题的.
但是如果没有能力解决问题, 就推卸为DotNet的BUG, 不敢苟同.



无论是哪一种语言,框架, 都有其内在的特点, 都需要大量的经验才能用得得心应手.

在不够经验的情况下,DotNet还是比较安全的.
像PHP那样把QUERYSTRING都弄成变量那个愚蠢的设计,会害死很多新手的.

热点排行