C#多线程定时器 System.Timers.Timer无法执行事件theout

privatevoidForm1_Load(objectsender,EventArgse){System.Timers.TimeraTimer=newSystem.Ti... private void Form1_Load(object sender, EventArgs e)
{
System.Timers.Timer aTimer = new System.Timers.Timer();
aTimer.Elapsed += new ElapsedEventHandler(theout);//执行theout
aTimer.Interval = 10000;//1000毫秒是一秒
aTimer.AutoReset = true;//true一直执行
aTimer.Enabled = true;
}

public void theout(object source, System.Timers.ElapsedEventArgs e)//定义theout
{
MessageBox.Show("OK!");
}
public Form1()
{
InitializeComponent();
this.Load += Form1_Load;
}
System.Timers.Timer aTimer;
private void Form1_Load(object sender, EventArgs e)
{
aTimer = new System.Timers.Timer(10000);//10秒
aTimer.Elapsed += new ElapsedEventHandler(theout);//执行theout
aTimer.AutoReset = true;//true一直执行
……
程序我改动了一下,倒是正常了,但是其中的原理没搞清楚,本人自学C#,入门级,麻烦哪位程序猿帮下忙解释一下
展开
 我来答
刷新①丅5e6
推荐于2017-05-27 · TA获得超过4333个赞
知道大有可为答主
回答量:1499
采纳率:64%
帮助的人:603万
展开全部
把这个定义成成员变量试试:System.Timers.Timer aTimer = new System.Timers.Timer();

原因大概是这样的:
你把aTimer声明在函数体内,那它就是个局部变量,C#语言中局部变量在函数结束以后一般都会被系统自动释放销毁的,也就是说你的Form1_Load()函数结束后,aTimer就已经被销毁了,aTimer所“执有”的事件(或者说函数)theout自然也就不能被执行了...
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式