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

Mik*_*uno 0 c# multithreading

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

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

在此先感谢您的帮助!

Idl*_*ind 6

假设您正在谈论从 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();
    }

}
Run Code Online (Sandbox Code Playgroud)

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