首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

两个时间控件冲突,改用多线程如何写

2012-02-11 
两个时间控件冲突,改用多线程怎么写?有两个时间控件,一个是1秒1次,一个3秒触发一次,如果时间的事件里程序

两个时间控件冲突,改用多线程怎么写?
有两个时间控件,一个是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;
}

...

热点排行