C# - 在x分钟后自动关闭表单

时间:2017-07-17 13:48:42

标签: c# multithreading

情况:我写了一个WinForms应用程序,用户通过RDP访问。应用程序的性质使得两个用户无法同时运行该应用程序。我们遇到的问题是,人们会忘记关闭应用程序,基本上将其他用户锁定。

我想要做的是添加在x分钟后自动关闭应用的功能。我意识到我需要使用线程,因为在主线程中标记时间会冻结应用程序。我不需要检测活动/不活动,但如果这样做很简单,我一定很想知道。

提前感谢您的任何帮助!

2 个答案:

答案 0 :(得分:1)

假设您正在谈论从WinForms应用程序内部关闭应用程序...使用SLaks建议的计时器:

public partial class Form1 : Form
{

    private System.Windows.Forms.Timer tmr;

    public Form1()
    {
        InitializeComponent();

        tmr = new System.Windows.Forms.Timer();
        tmr.Tick += delegate {
            this.Close();
        };
        tmr.Interval = (int)TimeSpan.FromMinutes(10).TotalMilliseconds;
        tmr.Start();
    }

}

如果你不想在X分钟不活动后更好地关闭并关闭,那么只要发生鼠标/键盘活动(WM_LBUTTONDOWN,WM_KEYDOWN,WM_SYSKEYDOWN等),就可以编写自己的IMessageFilter()来重置计时器。您在表单的Load()事件中使用Application.AddMessageFilter()注册过滤器。

答案 1 :(得分:0)

这可能有所帮助,只需将它们组合在一起,它将在按下button1后1.5秒关闭表格。您可以在表单加载后随时更改此内容。

    public void testc()
    {
        Timer t = new Timer();
        t.Interval = 1500;
        t.Tick += new EventHandler(timer_Tick); 
        t.Start();

    }

    private void timer_Tick(object sender, EventArgs e)
    {
        MessageBox.Show("Tick");
        this.Close();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        testc();
    }