一个 timer1,每次循环会启动10个线程,如下:
private void timer1_Tick(object sender, EventArgs e)
{
Thread1 = new Thread(this.intoDB1);
Thread1.Start(); Thread2 = new Thread(this.intoDB2);
Thread2.Start(); Thread3 = new Thread(this.intoDB3);
Thread3.Start(); Thread4 = new Thread(this.intoDB4);
Thread4.Start(); Thread5 = new Thread(this.intoDB5);
Thread5.Start(); Thread6 = new Thread(this.intoDB6);
Thread6.Start(); Thread7 = new Thread(this.intoDB7);
Thread7.Start(); Thread8 = new Thread(this.intoDB8);
Thread8.Start(); Thread9 = new Thread(this.intoDB9);
Thread9.Start(); Thread10 = new Thread(this.intoDB10);
Thread10.Start();
}intoDB1到intoDB10的方法内容相同,如下: private void intoDB1()
{
//用sql语句取出MySql里200条数据
//再用while循环插入到SqServer数据库里
//然后结束此线程
Thread1.Abort();
}首先设置timer1间隔为30秒。程序运行后,开始10个线程都能够完成自己操作,可随着运行时间的延长,慢慢30秒就不够用了,程序就会报错。最后去掉timer1,人工单击按钮来启动运行这10个线程,测试发现,随着次数的增多,这10个线程越来越慢,开始取200数据插200数据共用10几秒,最后执行一次需要一分多钟才能把200数据取完插完,这是怎么回事?
private void timer1_Tick(object sender, EventArgs e)
{
Thread1 = new Thread(this.intoDB1);
Thread1.Start(); Thread2 = new Thread(this.intoDB2);
Thread2.Start(); Thread3 = new Thread(this.intoDB3);
Thread3.Start(); Thread4 = new Thread(this.intoDB4);
Thread4.Start(); Thread5 = new Thread(this.intoDB5);
Thread5.Start(); Thread6 = new Thread(this.intoDB6);
Thread6.Start(); Thread7 = new Thread(this.intoDB7);
Thread7.Start(); Thread8 = new Thread(this.intoDB8);
Thread8.Start(); Thread9 = new Thread(this.intoDB9);
Thread9.Start(); Thread10 = new Thread(this.intoDB10);
Thread10.Start();
}intoDB1到intoDB10的方法内容相同,如下: private void intoDB1()
{
//用sql语句取出MySql里200条数据
//再用while循环插入到SqServer数据库里
//然后结束此线程
Thread1.Abort();
}首先设置timer1间隔为30秒。程序运行后,开始10个线程都能够完成自己操作,可随着运行时间的延长,慢慢30秒就不够用了,程序就会报错。最后去掉timer1,人工单击按钮来启动运行这10个线程,测试发现,随着次数的增多,这10个线程越来越慢,开始取200数据插200数据共用10几秒,最后执行一次需要一分多钟才能把200数据取完插完,这是怎么回事?
就类似于
while(true)
{
do....
}