情况:我写了一个WinForms应用程序,用户通过RDP访问。应用程序的性质使得两个用户不能同时运行应用程序。我们遇到的问题是人们会忘记关闭应用程序,基本上锁定其他用户。C# - x分钟后自动关闭表格
我想要做的是添加功能,以在x分钟后自动关闭应用程序。我意识到我需要为此使用线程,因为在主线程中的标记时间会冻结应用程序。我不需要检测活动/不活动,但如果这样做微不足道,我一定会想知道。
在此先感谢您的帮助!
情况:我写了一个WinForms应用程序,用户通过RDP访问。应用程序的性质使得两个用户不能同时运行应用程序。我们遇到的问题是人们会忘记关闭应用程序,基本上锁定其他用户。C# - x分钟后自动关闭表格
我想要做的是添加功能,以在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();
}
}
如果你wan't获得X分钟后爱好者和关闭然后编写自己的IMessageFilter(),当鼠标/键盘活动发生时(WM_LBUTTONDOWN,WM_KEYDOWN,WM_SYSKEYDOWN等)重置Timer。您在表单的Load()事件中注册您的筛选器Application.AddMessageFilter()
。
这可能会有所帮助,只要将它们放在一起,它将在按下按钮1后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();
}
代码在哪里? – Rekcs
试试'Timer'或'await Task.Delay()'。 – SLaks
如果您也使用Javascript,您可以设置超时时间并在定义的时间间隔后关闭弹出窗口 – Aby