Benutzer mit den meisten Antworten
Probleme mit BackgroundWorker

Frage
-
Hallo,
ich versuche mich gerade mit Backgroundworker und möchte Tabllen mit Fileinfos füllen lassen dazu folgender Code in der cs
public FolderModel() { worker.DoWork += worker_DoWork; worker.RunWorkerCompleted += worker_RunWorkerCompleted; worker.RunWorkerAsync(); worker2.DoWork += worker_DoWork2; worker2.RunWorkerCompleted += worker_RunWorkerCompleted2; worker2.RunWorkerAsync(); _warpVisible = Visibility.Collapsed; OnPropertyChanged("WrapVisible"); }
private void worker_DoWork(object sender, DoWorkEventArgs e)
{
CreateOld();
}
private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (round == 2)
{
worker3.DoWork += worker_DoWork3;
worker3.RunWorkerCompleted += worker_RunWorkerCompleted3;
worker3.RunWorkerAsync();
}
} public void CreateOld()
{
if (GlobalData.OldWithData == null)
{
GlobalData.OldWithData = new DataTable("OldTable");
}
DataColumn newColumn = new DataColumn();
GlobalData.OldWithData.Columns.Add("Datum", typeof(String));
GlobalData.OldWithData.Columns.Add("Pfad", typeof(String));
GlobalData.OldWithData.Columns.Add("Dateiname", typeof(String));
GlobalData.OldWithData.Columns.Add("Endung", typeof(String));
GlobalData.OldWithData.Columns.Add("Version", typeof(String));
GlobalData.OldWithData.Columns.Add("Groesse", typeof(int));
GlobalData.OldWithData.Columns.Add("CRC", typeof(String));
GlobalData.OldWithData.Columns.Add("DateiOrdner", typeof(String));
GlobalData.OldWithData.Columns.Add("More/Fail", typeof(int));
for (int i = 0; i < GlobalData.OldItems.Rows.Count - 1; i++)
{
string Pfad = GlobalData.OldInstallPath + "\\" + GlobalData.OldItems.Rows[i].ItemArray[0].ToString();
FileInfo newInfo = new FileInfo(Pfad);
FileVersionInfo newversion = FileVersionInfo.GetVersionInfo(Pfad);
DataRow newrow = GlobalData.OldWithData.NewRow();
newrow[0] = newInfo.CreationTime.ToString();
newrow[1] = newInfo.DirectoryName.ToUpper().ToString();
newrow[2] = newInfo.Name.ToUpper().ToString();
newrow[3] = newInfo.Extension.ToUpper().ToString();
von CreateOld() nur den Anfang, weil ich da Probleme bekomme.
Und zwar sobald er anfängt die FileVersionInfo auszuführen bricht er die weitere verarbeitung ab und springt in
worker_RunWorkerCompleted()
warum ??
danke
Cay
Antworten
-
Hallo Cay,
schau Dir die Error-Eigenschaft der RunWorkerCompletedEventArgs an, denn wahrscheinlich kommt es zu einer Ausnahme, die von DoWork abgefangen wird. Dann wird DoWork beendet und das RunWorkCompleted Ereignis ausgelöst.
Um das zu verhindern, baue eine Fehlerbehandlung (try ... catch) ein. Ich könnte mir denken, dass beim Zugriff auf die Dateien, das eine oder andere Probleme auftritt.
Im übrigen sollte man auf gemeinsame Daten nicht ohne Synchronisation zugreifen - GlobalData lässt so einiges vermuten...
Gruß Elmar
- Als Antwort markiert joksch_c Mittwoch, 26. November 2014 15:48
Alle Antworten
-
Hallo Cay,
schau Dir die Error-Eigenschaft der RunWorkerCompletedEventArgs an, denn wahrscheinlich kommt es zu einer Ausnahme, die von DoWork abgefangen wird. Dann wird DoWork beendet und das RunWorkCompleted Ereignis ausgelöst.
Um das zu verhindern, baue eine Fehlerbehandlung (try ... catch) ein. Ich könnte mir denken, dass beim Zugriff auf die Dateien, das eine oder andere Probleme auftritt.
Im übrigen sollte man auf gemeinsame Daten nicht ohne Synchronisation zugreifen - GlobalData lässt so einiges vermuten...
Gruß Elmar
- Als Antwort markiert joksch_c Mittwoch, 26. November 2014 15:48