Programm soll sich selbst beenden



  • Hallo,

    wie kann sich ein Programm selbst beenden? Ich hätte jetzt vermutet dass es sowas wie Form1.close() gibt, aber das scheint nicht der Fall zu sein.

    Gruß
    Michael



  • Eine Forms Anwendung? Eine Konsolenanwendung? Eine WPF Anwendung?

    Bei einer Forms-Anwendung reicht es, wenn die Form intern "this.Close()" aufruft. Bei einer Konsolenanwendung solltest du derartige Probleme eher selten haben, denn du musst ja nur geschickt in die Main-Funktion zurück kehren.

    Bei WPF Anwendungen sollte es ebenfalls reichen das Hauptwindow zu schließen.



  • ja, es geht um eine Forms Anwendung. An welche Stelle muss ich this.Close() schreiben, wenn sich beispielsweise die Anwendung nach 2 Sekunden von selbst schliessen soll?
    So geht es jedenfalls nicht:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace test_close
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                System.Threading.Thread.Sleep(2000);
                this.Close();
            }
        }
    }
    

    Gruß
    Michael



  • Dein Ernst?! In deinem Beispiel versuchst du das Fenster zu schließen bevor es jemals angezeigt wurde.

    Wenn die Anwendung sich Zeitgesteuert beenden soll, nimm einen Timer.

    public partial class Form1 : Form
    {
       public Form1()
       {
           InitializeComponent();
       }
    
       protected override void OnShown()
       {
           tmrClose.Interval = 2000;
           tmrClose.Tick += Timer_Tick;
           tmrClose.Start();
       }
    
       Timer tmrClose = new Timer();
    
       private void Timer_Tick(Object sender, EventArgs e)
       {
           tmrClose.Stop();
           this.Close();
       }
    }
    


  • Ich kriege bei deinem Beispiel diese Fehlermeldung:
    error CS0115: 'test.close.Form1.OnShown()': no suitable method found to override

    Ist das etwas was mit VS2008 noch nicht geht?

    Gruß
    Michael



  • Ich glaube jetzt hab ich's. Nicht OnShown(), sondern Shown().

    Gruß
    Michael



  • Problem gelöst, vielen dank für deine Hilfe!

    Gruß
    Michael



  • Zur Ergänzung:

    this.Close() schliesst (jeweils) die aktuelle Form
    Application.Exit() schliesst das Programm vollständig

    Unterscheidung kann wichtig sein!



  • berniebutt schrieb:

    Zur Ergänzung:

    this.Close() schliesst (jeweils) die aktuelle Form
    Application.Exit() schliesst das Programm vollständig

    Unterscheidung kann wichtig sein!

    Aber wenn die Anwendung nur aus Form1 besteht, und auch keine weiteren Threads gestartet wurden, dann ist es egal, richtig?

    Gruß
    Michael



  • Deshalb schrieb ich ja auch vom "Hauptformular".


Log in to reply