请教C#中线程和System.Threading.Timer类的简单问题
代码:
class Trans
{
public delegate void myDlg(string s);
public event myDlg myEvent;
private System.Timers.Timer myTimer;
public Trans()
{
myTimer =new System.Timers.Timer(3000);
myTimer.Elapsed +=new System.Timers.ElapsedEventHandler(myTimer_Elapsed);
myTimer.Enabled = true;
}
private void myTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
myTimer.Enabled = false;
string s = "xxxx";
System.Threading.Timer timer = new System.Threading.Timer(new TimerCallback(ReceiveThread),s,0,0);
myTimer.Enabled = true;
}
private void ReceiveThread(object s)
{
if (this.myEvent != null)
this.myEvent(System.Convert.ToString(s));
}
}
=========================================================================================
class Manager
{
public Manager()
{
Trans trans = new Trans();
trans.myEvent += new Trans.myDlg(trans_myEvent);
}
private void trans_myEvent(string s)
{
Console.WriteLine(s);
}
}
=========================================================================================
class Program
{
static void Main(string[] args)
{
Manager m = new Manager();
Thread.Sleep(10000);
}
}
=========================================================================================
我的理解是,既然new了一个System.Threading.Timer,那它就应该在自己单独的线程中运行,又由于new的时候最后一个参数为0,它不是应该不断运行吗?它应该和myTimer无关吧,为什么它是隔3秒输出一个“xxxx"呢?希望大家帮帮忙啊。