Application.exit(); funktioniert nicht

Hallo zusammen,

ich habe folgendes Problem. Ich bin immer davon ausgegangen, dass wenn ich mit this.close(); oder mit Application.exit(); ein Prog. schließe dies auch ohne Probleme funktioniert. In meinem Code Bsp. das ich unten angehängt habe möchte ich über ein Unterprogramm eine EMAIL versenden. Alles kein Problem. Am Ende jedoch wird das Prog. nicht geschlossen, sondern bleibt weiterhin in der Form 1 hängen. Der Debugger gibt mir folgende Meldung aus:

Auf das verworfene Objekt kann nicht zugegriffen werden.
Objektname: „Form1“.

Hier der Code der Form1:

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 PDF_Versand
{
public partial class Form1 : Form
{
outlook outlookTMP = new outlook();

public Form1()
{
InitializeComponent();
email_senden();
}

private void email_senden()
{
outlookTMP.sendmail(„[email protected]“, „TEST“, „TESTTEXT“, „C:/Test.txt“);

this.Close(); // Hier gibt es die Fehlermeldung.
}

}
}

Vielen Dank an alle!
Gruß
David

Dispose() wird über Close() indirekt im Konstruktor der Form aufgerufen. Du kannst aber kein Objekt „disposen“, was noch gar nicht fertig erstellt wurde. Ich vermute, dass hier das Problem liegt. Mit Application.Exit() wird es wohl genauso sein, da diese auch Close() und somit Dispose() aufruft.

Grüße, JasonDelife.

Die Erklärung hast Du ja schon. Eine Variante wie es gehen könnte wäre:

Wenn Du

email\_senden

aus dem Konstruktor in den Form1_Load event verschiebst. Dann geht es.

Allerdings verstehe ich nicht wieso das ganze in einem Form ablaufen soll, das nie angezeigt wird? Warum nicht gleich eine Konsolenanwendung?

Grüße
morrighan

Vielen Dank!
Das war die Lösung.

Das mit der Form war ursprünglich so geplant, dass während dem Versand eine Meldung angezeigt wird. Da der Vorgang so schnell abgearbeitet wird bekommt man dies nicht mit.

Gruß
David