Datei gelockt

Raven280438

Erfahrenes Mitglied
Hi,

Ich habe einen Thread, in dem ein Process gestartet wird. Die Rückgabe des Process-Programms wird zeilenweise in eine Datei geschrieben.
Soweit funktioniert alles auch.

Wenn ich jedoch den Thread und den Process vorzeitig beende (mittels .Kill() und .Abort()) bekomm ich beim nächsten Starten des Threads die Exception, dass die Datei schon von einem Anderen Process verwendet wird.

Wie kann ich beim Thread-Killen die Datei auch wieder freigeben?


Gruß
 

sheel

I love Asm
Hi

einfach nicht den Thread killen, sondern ordentlich beenden.
Gib ihm eine Variable, an der er erkennen kann, ob er sich beenden soll.
Threadsafe-Zeug beachten!
 

Raven280438

Erfahrenes Mitglied
Hi,

danke für die Info

Ich steh aber grad etwas auf dem Schlauch. Wie kann ich eine Variable an den Thread übergeben? Im Moment hab ich folgende Methode für das Schließen des Forms:

Code:
private void Form_CreateDBBackup_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (this.BackupThread.IsAlive)
            {
                DialogResult result = MessageBox.Show("Schließen?", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (result == DialogResult.Yes)
                {
                    this.BackupThread.Abort();
                }
                else
                {
                    e.Cancel = true;
                }
            }
        }


Gruß
 

sheel

I love Asm
Mach einfach eine Membervariable, der du zB. den Wert 1 gibst.
Der Thread prüft immer, ob sie noch 1 ist; bei 0 macht er ein return.
Beim Beenden setzt du sie auf 0 und wartest, bis der Thread fertig ist..

Für die Threadsicherheit lock verwenden.