| 

.NET C# Java Javascript Exception

0
Hallo,
ich möchte in meinem VB.net Programm eine generierte Textdatei per Mail
versenden. Klappt soweit, nur kann ich danach die Datei wieder überschreiben
oder löschen wegen einer unbehandelten Ausnahme (Prozess kann nicht auf Datei "test.txt" zugreifen, da diese in Verwendung ist).
Hier ein Codeausschnitt:

Imports System.io

Private Sub btnSenden_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSenden.Click
Using sw As StreamWriter = New StreamWriter("test.txt")
sw.WriteLine("mein Text")
sw.Close()
End Using
'Versenden der Mail...'
File.Delete("test.txt")
End sub


Wie kann ich erreichen, die Datei zu überschreiben oder zu löschen
ohne das Programm neu zu starten?
Ich verwende VB.net express 2008, WinXP.

Danke schonmal!
News:
07.09.2009
Scarabaeus 1 1 1
2 Antworten
1
Ich vermute mal, die MailMessage ist nicht in ein Using eingeschlossen, somit wird der intern erzeugte FileStream nicht disposed, somit bleibt die Datei im Zugriff.

Wenn du die Datei als Attachment versenden möchtest, warum speicherst du die überhaupt auf Platte?

Die Klasse
System.Net.Mail.Attachment
hat doch Konstruktoren mit Stream-Eingabe.

Einfach den Text in der gewünschten Codierung mit einem
System.IO.StringWriter
in einen
System.IO.MemoryStream
schreiben, dessen Position auf 0 setzen,
System.Net.Mail.Attachment
instanzieren, gewünschten Dateinamen über
<instanz>.ContentDisposition.FileName
setzen, fertig.

Bitte beachten, dass der MemoryStream erst beim Verschicken der Mail ausgelesen wird.
07.09.2009
McZosch 31 1 1
0
Die Verwendung von using zum Schreiben der Datei gibt die Datei ja nachher quasi frei. Folglich klappt der Versand. Vermutlich blockiert der Versand der Email die Datei, aber genau dazu gibt es kein Code-Beispiel...
07.09.2009
noi76 41 1 1

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH