Forum: PC-Programmierung BackgroundWorker, Abbruch mit Info?


von Matthias L. (Gast)


Lesenswert?

Hi Leute,

ich habe einen Backgroundworker, der logischerweise was tut. Mein 
Problem ist nun, das ich unter Umständen abbrechen möchte und der 
WindowsForm eine Info darstellen möchte, warum abgebrochen wurde. Also 
etwa so:
1
void bgw_dowork (...)
2
{
3
  System::String^ sInfo = gcnew System::String( L"" );
4
5
   .. mach was...
6
7
  if ( Fehler1 )
8
  {
9
    sInfo = L"Fehler1";
10
    e->Cancel = true;
11
    return;
12
  }
13
14
   .. mach was...
15
16
  if ( Fehler2 )
17
  {
18
    sInfo = L"Fehler2";
19
    e->Cancel = true;
20
    return;
21
  }
22
23
   .. mach was...
24
25
  //-- erfolgreich beendet
26
  e->Result = ...
27
  e->Cancel = false;
28
}


Im EventHandler für das Complete-Event kann ich prüfen, ob erfolgreich 
beendet wurde. Wenn ja, dann nutze ich e->Result. Aber wenn nicht, wie 
bekomme ich die Info warum? Also wie kann ich das sInfo imBeispiel 
übergeben?
e->Result kommt nicht mit, wenn ich mit e->Cancel abbreche...

Danke schonmal

von ♪Geist (Gast)


Lesenswert?

Weil du zuvor return ausführst.

von Matthias L. (Gast)


Lesenswert?

Ja. Das mache ich, weil ich ja den restlichen Code nicht mehr abarbeiten 
möchte. Also quasi so:
1
void bgw_dowork (...)
2
3
  ...
4
5
  if ( Fehler2 )
6
  {
7
    sInfo = L"Fehler2";
8
    e->Result = sInfo;
9
    e->Cancel = true;
10
    goto Ende;
11
  }
12
13
   .. mach was...
14
15
  //-- erfolgreich beendet
16
  e->Result = ...
17
  e->Cancel = false;
18
19
Ende:
20
  ;
21
}

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Geht es um C#? Laut 
http://msdn.microsoft.com/en-us/library/cc221403(v=vs.95).aspx gibt es 
da ein e.Error
Also einfach bei einem Fehler eine (passende) Exception auslösen und das 
Property sollte gefüllt sein.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.