情況:我寫了一個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