|
| |

VB.NET - Fortgeschrittene| <Wichtig!> Datei wird von einem anderen Prozess verwendet? | |  | | Autor: Griever | | Datum: 19.07.07 11:35 |
| Hi
Ich habe mir eine Funktion gebastelt, welche einen Ordner kopieren soll. Mit allen Unterordnern. Theoretisch funktioniert die Funktionprima. Jedoch stellt sich beim kopierern von Dateien ein schwerwiegendes Problem heraus:
Möchte ich die eine Datei dann letztendlich wirklich kopieren, bekomme ich die System.IO.Exception, dass die datei von einem anderen Prozess verwendet wird. Dies passiert jedoch bei ALLEN dateien. Ich habe es mit dem Unlocker nachgeprüft (direkt nach der Fehlermeldung) und kein handle auf ein anderen Prozess festgestellt.
Bitte kann mir jemand sagen, was an dieser Funktion hier falsch läuft:
Private Sub Button1Click(sender As System.Object, e As System.EventArgs)
Dim I As ListViewItem
For Each I In ListView2.Items ' Die Aufgabenliste mit je Quell und
' Zielordner als vollständige Pfade
Dim rf As String = I.Text.Trim() ' Der Quellordner
listView1.Items.Clear() ' Fortschrittsliste leeren
label3.Text = "Lese Verzeichnis aus." ' Status
label3.Update() ' Update Status
recFolder(rf,listView1) ' Rekursives Auslesen und in die
' Fortschrittsliste schreiben (ordner ... dateien, unterordner usw.)
Dim a As ListViewItem ' Item zum durchgehen der Liste
For Each a In listView1.Items
Try
Dim FolderPath As String = a.Text.Trim() ' Quellpfad der Datei/des
' Ordners
Dim NewFolderPath As String = FolderPath.Replace(I.Text.Trim( _
),I.SubItems(0).Text.Trim()) ' Zielpfad der Datei/des Ordners
If System.IO.Directory.Exists(FolderPath) = False Then ' Prüfen,
' ob Ordner oder Datei
label3.Text = "Kopiere Datei: " & FolderPath.Replace( _
I.Text.Trim(),"") ' Status
label3.Update()
System.IO.File.Copy(FolderPath,NewFolderPath,True) ' Datei
' kopieren (HIER ENTSTEHT DER FEHELR!)
Else ' Ist es ein Ordner ... dann ...
If System.IO.Directory.Exists(NewFolderPath) = False Then '
' Existiert Zielordner schon?
label3.Text = "Erstelle Verzeichnis: " & NewFolderPath '
' Wenn nein, erstellen und Statusausgabe.
label3.Update()
System.IO.Directory.CreateDirectory(NewFolderPath)
End If
End If
a.SubItems(1).Text = "OK" ' Status des aktuellen Eintrages auf
' Ok setzen, wenn kein Fehler auftritt
a.BackColor = Color.LightGreen ' Farbe setzen bei keinem Fehler
Catch ex As Exception ' Fehler abfangen
If ex.ToString().ToLower().IndexOf("another process") > -1 _
Then ' Bisher bekannte Fehlerkombinationen abfragen (ist
' bisher nur dies gewesen)
a.SubItems.Add("Wird verwendet!") ' Fehler eintragen.
Else
a.SubItems.Add("Fehler") ' Unbekannte Fehler als "Fehelr" _
abstempeln
End If
End Try
Next
Next
label3.Text = "" ' Status löschen
label3.Update()
End SubIch hoffe, mir kann jemand helfen. Ich bin am verzweifeln. Denn ich kann mir nicht erklären, warum er mir diese Fehlermeldung gegen den Kopf wirft.
MFG
Griever |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
Neu! sevEingabe 3.0 
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere InfosTipp des Monats Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
| |
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|