情况:我写了一个WinForms应用程序,用户通过RDP访问。应用程序的性质使得两个用户无法同时运行该应用程序。我们遇到的问题是,人们会忘记关闭应用程序,基本上将其他用户锁定。
我想要做的是添加在x分钟后自动关闭应用的功能。我意识到我需要使用线程,因为在主线程中标记时间会冻结应用程序。我不需要检测活动/不活动,但如果这样做很简单,我一定很想知道。
提前感谢您的任何帮助!
答案 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();
}