我有一个windows桌面应用程序,它在一个模式的windows窗体打开后,在后台创建一个文件,并在其中写入创建时间。我需要每5秒更新一次该文件,并与创建时间进行比较,以便在60分钟后自动关闭模式窗口,并删除该文件。文件创建/删除和时间跟踪需要在后台进行,以便用户在使用该模式时不受此影响。
这可以在windows桌面应用程序中实现吗?
发布于 2017-03-15 15:06:54
不需要创建文件并定期更新和检查它。使用timer可以更轻松地实现这一点:
var modalForm = new ModalForm();
var timer = new System.Timers.Timer(new TimeSpan(1, 0, 0).TotalMilliseconds);
timer.Elapsed += (s, ea) => { modalForm.Invoke(new MethodInvoker(modalForm.Close)); };
modalForm.Shown += (s, ea) => { timer.Start(); };
modalForm.FormClosed += (s, ea) => { timer.Stop(); };
modalForm.ShowDialog();请注意,Timer.Elapsed处理程序在单独的线程中运行,因此在调用模态表单的Close方法时需要使用Control.Invoke。或者,您可以将timer.SynchronizingObject设置为modalForm
var modalForm = new ModalForm();
var timer = new System.Timers.Timer(new TimeSpan(1, 0, 0).TotalMilliseconds);
timer.SynchronizingObject = modalForm;
timer.Elapsed += (s, ea) => { modalForm.Close(); };
modalForm.Shown += (s, ea) => { timer.Start(); };
modalForm.FormClosed += (s, ea) => { timer.Stop(); };
modalForm.ShowDialog();发布于 2017-03-15 15:29:47
简单地说,您可以尝试如下所示的方法
private void Form1_Load(object sender, EventArgs e)
{
Timer MyTimer = new Timer();
MyTimer.Interval = (60 * 60 * 1000); // 60 mins
MyTimer.Tick += new EventHandler(MyTimer_Tick);
MyTimer.Start();
}
private void MyTimer_Tick(object sender, EventArgs e)
{
MessageBox.Show("The form will now be closed.", "Time Elapsed");
this.Close();
}https://stackoverflow.com/questions/42802723
复制相似问题