2017-07-17 2 views
0

Situation: Ich habe eine WinForms-Anwendung geschrieben, auf die Benutzer über ein RDP zugreifen. Die Art der Anwendung ist so, dass zwei Benutzer die Anwendung nicht gleichzeitig ausführen können. Das Problem, das wir haben, ist, dass die Leute vergessen werden, die App zu schließen und andere Nutzer im Wesentlichen zu sperren.C# - Automatisches Schließen eines Formulars nach x Minuten

Was ich tun möchte, ist Funktionalität hinzufügen, um die App nach x Minuten automatisch zu schließen. Ich merke, dass ich Threading für dieses verwenden muss, da das Markieren der Zeit im Haupt-Thread die App einfrieren würde. Ich habe keine kritische Notwendigkeit, Aktivität/Inaktivität zu entdecken, aber wenn das trivial ist, würde ich es gerne wissen.

Vielen Dank im Voraus für jede Hilfe!

+1

Wo ist der Code? – Rekcs

+1

Versuchen Sie einen 'Timer' oder' warten Sie auf Task.Delay() '. – SLaks

+0

Wenn Sie auch Javascript verwenden, können Sie Timeout einstellen und das Popup nach dem definierten Intervall schließen – Aby

Antwort

0

Angenommen, Sie sprechen die App aus dem Inneren der WinForms-Anwendung selbst zu schließen ... einen Timer verwenden, wie von SLaks vorgeschlagen:

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(); 
    } 

} 

Wenn Sie schicker und schließen nach X Minuten erhalten wan't zu Inaktivität, dann schreibe deine eigene IMessageFilter(), die einen Timer zurücksetzt, wenn Maus/Tastatur-Aktivität auftritt (WM_LBUTTONDOWN, WM_KEYDOWN, WM_SYSKEYDOWN, etc.). Sie registrieren Ihren Filter mit Application.AddMessageFilter() in dem Load() Ereignis Ihres Formulars.

0

Dies kann helfen, setzen Sie das zusammen, es schließt das Formular 1,5 Sekunden nach dem Drücken der Taste1. Sie können dies jederzeit nach dem Laden des Formulars ändern.

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(); 
    } 
Verwandte Themen