在Form里写了计时器,为什么关闭不了这个窗口

Taotesea 2011-06-09 11:55:30
在Form里写了计时器,为什么关闭不了这个窗口

我写了一个C_Message类,内容如下:
using System;
using System.Windows.Forms;
using System.Drawing;
using System.Threading;
namespace Shared
{
public class C_Message:Form
{
System.Timers.Timer t ;
public void CInitMessage(int iMessageSizeWidth,int iMessageSizeHeight)
{
this.Size=new Size(iMessageSizeWidth,iMessageSizeHeight);
}

public void CShowMessage(int iTime)
{
t = new System.Timers.Timer(iTime);
t.Elapsed += new System.Timers.ElapsedEventHandler(CloseMessage);
t.AutoReset = false;
t.Enabled = true;
this.Show();
}

public void CloseMessage(object source, System.Timers.ElapsedEventArgs e)
{
this.Close();
}
}
}


在其它实现C_Message类
C_Message Dlg=new C_Message();
Dlg.CInitMessage(200,200);
Dlg.CShowMessage(1000);


但是为什么在可以显示窗口,但是到了时间却关闭不了这个窗口


谢谢:)
...全文
71 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
机器人 2011-06-09
  • 打赏
  • 举报
回复
this.Close();

改为:

t.Enabled = false;
Action formAction = delegate { this.Close(); };
this.Invoke(formAction, null);
spacher 2011-06-09
  • 打赏
  • 举报
回复
c#菜鸟训练营
this.Close(); 只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出;
System.Environment.Exit(0); 这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净。
把this.close()改为System.Environment.Exit(0);
tmd456 2011-06-09
  • 打赏
  • 举报
回复
timer_ticket
Taotesea 2011-06-09
  • 打赏
  • 举报
回复
谢谢,问题解决了
快乐大法师 2011-06-09
  • 打赏
  • 举报
回复
Timer t;
public void CInitMessage(int iMessageSizeWidth, int iMessageSizeHeight)
{
this.Size = new Size(iMessageSizeWidth, iMessageSizeHeight);
}

public void CShowMessage(int iTime)
{


t = new Timer();
t.Interval = iTime;
t.Tick += new EventHandler(formTimer_Tick);
t.Start();
this.Show();


}

public void formTimer_Tick(object sender, EventArgs e)
{
this.Close();
}

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧