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不要这高啊,谢谢了
但是你使用Sleep(2000)那么程序无论如何每次循环也要停下来两秒了.private static Main()
{
for(int i=0;i<x;i++)
{
Application.DoEvent();//Thread.Sleep(2000);
strings[i] = i.ToString();
}
}
其实真实的问题是要在应用程序c#里写XMLHTTP的异步请求,但是程序写了CPU太高了,郁闷啊,能怎么优化代码吗
-----------------------------------------------------------
你说的方法我也试过,CPU也一样的高啊,100%,当X的循环超过200后,后面就一直100%了
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();
}
}
Thread.Sleep(100);//其实改的小一点也不错.2秒太长了.
=------------------------------------------------------------
这个程序就是要模拟延迟有2S的呀
Thread.Sleep(100);
这样CPU就不会是100%了.