tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
564
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Raven280438 Raven280438 ist offline Mitglied Brokat
    Registriert seit
    Aug 2007
    Beiträge
    329
    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ß
     

  2. #2
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.504
    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!
     

  3. #3
    Raven280438 Raven280438 ist offline Mitglied Brokat
    Registriert seit
    Aug 2007
    Beiträge
    329
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    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ß
     

  4. #4
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.504
    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.
     

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 05.03.08, 15:10
  2. Antworten: 2
    Letzter Beitrag: 12.02.08, 18:21
  3. Antworten: 4
    Letzter Beitrag: 19.09.06, 10:09
  4. Antworten: 3
    Letzter Beitrag: 08.11.04, 20:43
  5. Datei Zugriff über Applet durch eine Policy - Datei
    Von Kian_the_klingon im Forum Java
    Antworten: 0
    Letzter Beitrag: 31.07.04, 20:23