Kopiervorgang abbrechen

21/11/2009 - 17:51 von Thomas Kehl | Report spam
Hallo zusammen.

Ich suche nach einer Möglichkeit ein File zu kopieren. Dies wàre
ansich noch kein Problem. Nun sollte ich aber die Möglichkeit haben,
in einigen Fàllen den Kopiervorgang abzubrechen.
Ich dachte, ich mache das mit einem Backgroundworker (mit einem
FileInfo.CopyTo() im DoWork) und kille dieses ggf. Das scheint aber
nicht zu gehen - d.h. ich muss im DoWork anscheinend auf das Cancel
selber reagieren, kann das aber nicht, da dieses ja durch CopyTo()
blockiert wird.

Kann mir jemand einen Tipp geben, wie ich das lösen könnte?

Besten Dank!

Gruss, Thomas
 

Lesen sie die antworten

#1 Konrad Neitzel
21/11/2009 - 18:15 | Warnen spam
Hallo,

"Thomas Kehl" schrieb im Newsbeitrag
news:

Ich suche nach einer Möglichkeit ein File zu kopieren. Dies wàre
ansich noch kein Problem. Nun sollte ich aber die Möglichkeit haben,
in einigen Fàllen den Kopiervorgang abzubrechen.



Also ich würde nicht einen Task einfach so killen, da hier immer das Risiko
besteht, dass Ressourcen ggf. nicht richtig freigegeben werden.

Eine Datei in einem BackgroundWorker zu kopieren ist ansonsten aber eine
relativ einfache Sache. Zwei Dateien öffnen und dann halt immer Daten lesen
und schreiben (z.B. 1KB Blöcke) und vor jedem Zyklus schauen, ob ein
Abbruch-Flag gesetzt ist. Dadurch hat man einen konsistenten Stand und kann
z.B. das angefangene Kopieren löschen, wenn abgebrochen wurde.

Spricht etwas gegen eine solche Lösung?

Wenn es aber doch ein richtiges killen sein sollte: Hier würde ich das Ganze
sogar in eine eigene Application Domain stecken damit diese am Ende
"entsorgt" werden kann. Dies kann ggf. bei der Freigabe von Ressourcen die
eine oder andere Hilfe sein. Aber auch dies ist nicht wirklich eine Lösung.
Ich würde immer eine saubere Implementierung vorziehen.

Mit den besten Grüßen,

Konrad

Ähnliche fragen