情况:我编写了一个用户通过 RDP 访问的 WinForms 应用程序。应用程序的性质是两个用户不能同时运行该应用程序。我们遇到的问题是人们会忘记关闭应用程序,基本上将其他用户锁定在外面。
我想要做的是添加功能以在 x 分钟后自动关闭应用程序。我意识到我需要为此使用线程,因为在主线程中标记时间会冻结应用程序。我没有检测活动/不活动的关键需求,但如果这很简单,我肯定想知道。
在此先感谢您的帮助!
假设您正在谈论从 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() 事件中注册过滤器。