2017-07-17 27 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(); 
    }