Hi,
in einer Anwendung lasse ich in einem Thread Dateien kopieren. Immer wenn eine Datei kopiert wurde, wird ein Event gefeuert. Im Programm fange ich die ab und will damit einen Fortschrittsbalken aktualisieren (Zugriff auf zwei int Properties in der kopierenden Klasse).
In WPF ist es ja nun so, dass man Steuerelemente nur aus dem gleichen Thread heraus verändern kann. Da ich jedoch das Ereignis im MainWindow abfange und das Steuerelement eigentlich auch dort erstellt wird, erschließt sich mir mein folgendes Problem nicht.
Immer wenn er eine Datei fertig hat (also quasi sofort nach dem Start), wirft er eine Exception:
| Fehlermeldung: |
| Der aufrufende Thread kann nicht auf dieses Objekt zugreifen, da sich das Objekt im Besitz eines anderen Threads befindet. |
kopierschleife:
C#-Code: |
foreach (FileInfo fi in Dateien)
{
if (!File.Exists(strPfad + strOrdnername + fi.Name))
{
intZahlDateienAktuell++;
intZahlDateienRest--;
intProzent = intZahlDateienAktuell / intZahlDateien * 100;
System.IO.File.Copy((Convert.ToString(fi.FullName)), strPfad + strOrdnername + fi.Name, true);
OnDateiKopiert(EventArgs.Empty);
}
}
|
Ereignisbehandlung:
C#-Code: |
private void objDA_DateiKopiert(Object objSender, EventArgs e)
{
progBarFortschritt.Value = objDA.propProzent;
}
|
Ich habe irgendwie das Gefühl, dass ich hier nen logischen Denkfehler habe, aber ich komme einfach nicht dahinter.
vielen Dank
Akhanto