首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每秒使用一些文本更新文件,表明windows模式已打开

每秒使用一些文本更新文件,表明windows模式已打开
EN

Stack Overflow用户
提问于 2017-03-15 14:41:24
回答 2查看 46关注 0票数 0

我有一个windows桌面应用程序,它在一个模式的windows窗体打开后,在后台创建一个文件,并在其中写入创建时间。我需要每5秒更新一次该文件,并与创建时间进行比较,以便在60分钟后自动关闭模式窗口,并删除该文件。文件创建/删除和时间跟踪需要在后台进行,以便用户在使用该模式时不受此影响。

这可以在windows桌面应用程序中实现吗?

EN

回答 2

Stack Overflow用户

发布于 2017-03-15 15:06:54

不需要创建文件并定期更新和检查它。使用timer可以更轻松地实现这一点:

代码语言:javascript
复制
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

代码语言:javascript
复制
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();
票数 1
EN

Stack Overflow用户

发布于 2017-03-15 15:29:47

简单地说,您可以尝试如下所示的方法

代码语言:javascript
复制
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();
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42802723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档