有这样一个随机数仿真器,每隔10秒产生一个随机数组,数组大小约为200。但总是cpu占用太大,不知道哪里出了问题。#region Create cyklic timer
int timerInterval = 10*1000; // 单位:ms
TimerCallback timerDelegate = new TimerCallback(CbTimer);
Timer timer = new Timer(timerDelegate,null,1000,timerInterval);
#endregionwhile (true) // 主线程停下来等待Timer对象的终止
{
Thread.Sleep(0);
}
public static void CbTimer(object obj)
{
Hashtable data = new Hashtable();
Random rand1=new Random();
for (int i = 0;i < alEnergyTag.Count; i++)
{
RandomData[i]=rand1.Next(start)*0.01*(i+1);
data.Add(alEnergyTag[i],RandomData[i]);
} TagKernel.WriteData(data); // write to tagkernel
Console.WriteLine("L1OPCSimulator send "+ data.Count +"个标签 to TagKernel"); foreach(DictionaryEntry de in data)
{
Console.WriteLine(System.DateTime.Now + " " + de.Key.ToString ()+ " " + de.Value);
} //random seed change
start+=10;
}
int timerInterval = 10*1000; // 单位:ms
TimerCallback timerDelegate = new TimerCallback(CbTimer);
Timer timer = new Timer(timerDelegate,null,1000,timerInterval);
#endregionwhile (true) // 主线程停下来等待Timer对象的终止
{
Thread.Sleep(0);
}
public static void CbTimer(object obj)
{
Hashtable data = new Hashtable();
Random rand1=new Random();
for (int i = 0;i < alEnergyTag.Count; i++)
{
RandomData[i]=rand1.Next(start)*0.01*(i+1);
data.Add(alEnergyTag[i],RandomData[i]);
} TagKernel.WriteData(data); // write to tagkernel
Console.WriteLine("L1OPCSimulator send "+ data.Count +"个标签 to TagKernel"); foreach(DictionaryEntry de in data)
{
Console.WriteLine(System.DateTime.Now + " " + de.Key.ToString ()+ " " + de.Value);
} //random seed change
start+=10;
}
朋友 看看这个问题。http://community.csdn.net/Expert/topic/5686/5686047.xml?temp=.8212702
TagKernel.WriteData(data);<==?
{
Thread.Sleep(0);
}这种语句留着干嘛!很耗CPU的!!!!
为什么要
while (true) // 主线程停下来等待Timer对象的终止
{
Thread.Sleep(0);
}或者不用timer 开个线程产生随机数
while
{
//产生随机数;
sleep(10000);
}
t.Elapsed += new System.Timers.ElapsedEventHandler(CbTimer);//到达时间的时候执行事件;
t.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;这么用吧!不用回调试试!