两个时间控件冲突,改用多线程怎么写?
有两个时间控件,一个是1秒1次,一个3秒触发一次,如果时间的事件里程序代码少的话还正常,但如果执行过多的时候,代码就会走不完,我想用多线程控制一下,可惜我不会用,谁能把以下代码改为多线程的,小弟谢谢了,或者有别的办法也行。
代码如下
class Class1
{
System.Timers.Timer aTimer;
System.Timers.Timer aTimer1;
public void test()
{
aTimer = new System.Timers.Timer();
aTimer.Enabled = true;
aTimer.Interval = 1000;
aTimer.Elapsed += new System.Timers.ElapsedEventHandler(aTimer_Elapsed);
GC.KeepAlive(aTimer);
aTimer1 = new System.Timers.Timer();
aTimer1.Enabled = true;
aTimer1.Interval = 3000;
aTimer1.Elapsed += new System.Timers.ElapsedEventHandler(aTimer1_Elapsed);
GC.KeepAlive(aTimer1);
}
void aTimer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
c();
}
void aTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
d();
}
public void c()
{
System.IO.FileStream fs = new System.IO.FileStream( "d:\\c.txt ", System.IO.FileMode.Append, System.IO.FileAccess.Write, System.IO.FileShare.Read);
System.IO.StreamWriter sw = new System.IO.StreamWriter(fs, System.Text.Encoding.UTF8);
for (int i = 0; i < 100000; i++)
{
sw.WriteLine(i + "\t " + DateTime.Now.Millisecond.ToString());
}
sw.Flush();
fs.Flush();
sw.Close();
fs.Close();
}
public void d()
{
System.IO.FileStream fs = new System.IO.FileStream( "d:\\d.txt ", System.IO.FileMode.Append, System.IO.FileAccess.Write, System.IO.FileShare.Read);
System.IO.StreamWriter sw = new System.IO.StreamWriter(fs, System.Text.Encoding.UTF8);
for (int i = 0; i < 100000; i++)
{
sw.WriteLine(i + "\t " + DateTime.Now.Millisecond.ToString());
}
sw.Flush();
fs.Flush();
sw.Close();
fs.Close();
}
}
[解决办法]
public void test()
{
Thread thread=new Thread(new ThreadStart(aaaa));
Thread thread=new Thread(new ThreadStart(bbbb));
}
public void aaaa()
{
aTimer = new System.Timers.Timer();
aTimer.Enabled = true;
aTimer.Interval = 1000;
aTimer.Elapsed += new System.Timers.ElapsedEventHandler(aTimer_Elapsed);
GC.KeepAlive(aTimer);
}
public void bbbb()
{
aTimer1 = new System.Timers.Timer();
aTimer1.Enabled = true;
aTimer1.Interval = 3000;
aTimer1.Elapsed += new System.Timers.ElapsedEventHandler(aTimer1_Elapsed);
GC.KeepAlive(aTimer1);
}
是不是要这种效果嘛????
[解决办法]
这样做,程序就没完没了的运行下去了,呵呵
[解决办法]
帮你改是不现实的啦,懒得看下去。太乱了。
public void aaa()
{
Thread thread = new Thread(bbb);
thread.Start();
}
public void bbb()
{
}
[解决办法]
...
void aTimer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
aTimer1.Enabled = false;
c();
}
void aTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
d();
}
...
[解决办法]
试试这个:
...
void aTimer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
aTimer1.Enabled = false;
c();
aTimer1.Enabled = true;
}
void aTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
aTimer.Enabled = false;
d();
aTimer.Enabled = true;
}
...