2017-07-17 40 views
0

情况:我写了一个WinForms应用程序,用户通过RDP访问。应用程序的性质使得两个用户不能同时运行应用程序。我们遇到的问题是人们会忘记关闭应用程序,基本上锁定其他用户。C# - x分钟后自动关闭表格

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

在此先感谢您的帮助!

+1

代码在哪里? – Rekcs

+1

试试'Timer'或'await Task.Delay()'。 – SLaks

+0

如果您也使用Javascript,您可以设置超时时间并在定义的时间间隔后关闭弹出窗口 – Aby

回答

0

假设你正在谈论从里面的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()

0

这可能会有所帮助,只要将它们放在一起,它将在按下按钮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(); 
    }