程序运行CPU占用太高(求助)
 private   static   int   x; 
 private   static   string[]   strings   =   new   string[x]; 
 private   static   Main() 
 { 
                for(int   i=0;i <x;i++) 
                { 
                            Thread.Sleep(2000); 
                            strings[i]   =   i.ToString(); 
                } 
 } 
 如上,如果用同步把运行以上函数,再把数组string[x]读出来的话,需要的时间至少是2S*X,太久了。   
 我在这里,用线程做的添加数组数据,用异步输出,主要代码如下 
 MyDelegate   dn   =   new   MyDelegate(test);//定义好的委托,test为定义好的输出函数 
 AsyncCallback   acb   =   new   AsyncCallback(CallBackMethod); 
 IAsyncResult   iar   =   dn.BeginInvoke(i,   acb,   dn); 
 private   void   CallBackMethod(IAsyncResult   ar) 
 { 
       if   (ar.IsCompleted) 
                { 
                      MyDelegate   dn   =   (MyDelegate)ar.AsyncState; 
                      string   r   =   dn.EndInvoke(ar); 
                   } 
 }   
 这样的话,速度提高了,但是当X比较大的时候,CPU占用率一直是100%   
 那位高手帮我看看,按照这个思路,写几个代码让CPU不要这高啊,谢谢了
------解决方案--------------------最好使用Application.DoEvents();这样可以做到响应其它的操作, 
 但是你使用Sleep(2000)那么程序无论如何每次循环也要停下来两秒了.   
 private static Main() 
 { 
      for(int i=0;i <x;i++) 
      { 
          Application.DoEvent();//Thread.Sleep(2000); 
          strings[i] = i.ToString(); 
      } 
 }
------解决方案--------------------CPU100%没有关系,只要能及时的响应其它的操作就可以了.   
 所以使用DoEvents()方法是最合适的.
------解决方案--------------------要速度,CPU就得高 
 这两者有冲突的,CPU低就需要慢点或者改进算法 
 呵呵,帮顶下
------解决方案--------------------不要用异步,另外产生一个线程来作为worker线程,主线程留作UI线程   
------解决方案--------------------private static int x; 
 private static string[] strings = new string[x]; 
 private static Main() 
 { 
      for(int i=0;i <x;i++) 
      { 
          Thread.Sleep(100);//其实改的小一点也不错.2秒太长了. 
          strings[i] = i.ToString(); 
      } 
 }