tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
1807
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von steff aka sId
    steff aka sId steff aka sId ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Ort
    Mannheim
    Beiträge
    341
    Also folgendes Problem:
    Ich bin gerade daran eine Software zu schreiben, die auf einer 3 Schichten Architektur basiert. Jetzt habe ich eine Berechnung, die über die Gui gestartet wird (ziehen einer Kubikwurzel aus einer sehr großen Zahl die bis zu 3072 Bit groß sein kann). Wer jetzt sagt wieso benutzt du so große Zahlen, ganz einfach weil es sich dabei um die Darstellung eines Implementierungsfehlers in einigen RSA-Klassenbibliotheken handelt und RSA Schlüssel heut zutage nunmal so groß sein können.
    Aber zurück zum eigentlichen Problem. Die Berechnung an sich starte ich über einen BackgroundWorker was mir so auch ganz gut gefällt. Aber was nicht so toll ist, ist dass wenn ich jetzt den worker canceln will ich den DoWorkEventArgs Parameter, durch meine Schichten und Klassen schleusen muss, da ich ja um abzubrechen, dass darin enthaltene Flag cancel abfragen muss. Gibt es dafür eine andere Lösung (vieleicht über Events!)? Oder hat jemand eine bessere Idee? Vieleicht hab ich da ja auch irgend etwas nicht ganz richtig verstanden...

    Hoffe ihr versteht was ich meine.

    vG Steffen
     

  2. #2
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    In welcher Schicht läuft der Backgroundworker? Vermutlich in der UI. In der Methode DoWork wird vermutlich mit einer Klasse aus der Businessschicht gearbeitet, oder? Damit hättest du quasi deine Businessklasse ohnehin in der UI und müsstest gar nicht durch irgendwelche Schichten ...

    Oder hast du den BackgroundWorker gewrappt und damit liegt er in der Businessschicht und die dort aufgerufene Klasse ebenfalls? Dann kannst du alles in der Businessschicht abfackeln ...

    Vielleicht gibst du einfach ein wenig mehr Informationen über deinen Aufbau und in welcher Schicht was genau zu finden ist. Sonst wird es ein Ratespiel ...
     

  3. #3
    Avatar von steff aka sId
    steff aka sId steff aka sId ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Ort
    Mannheim
    Beiträge
    341
    Sry, länger nicht mehr hier rein geschaut.
    Ja richtig der Backgroundworker liegt in der UI und die aufgerufene Klasse/ Methode stammt aus der Businessschicht. D.h. wenn ich eine Aktion des Backgroundworkers abbrechen will, muss ich entsprechend den EventParameter des BackgroundWorkders meiner Businessklasse zur Verfügung stellen, damit diese auch die Verarbeitung abbricht, wenn ich das cancel Flag am BackgroundWorkder setze.

    vG Steffen
     

  4. #4
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Nicht zwingend.

    Ich gehe davon aus, dass der Benutzer deiner Software über die UI die Verarbeitung abbrechen kann? Hier hast du bezüglich des BackgroundWorkers noch keine Probleme, da du diesem den Abbruch ja mitteilen kannst.

    Nun arbeitest du in deinem BackgroundWorker mit einem eigenen Objekt, welches die Aufgabe durchführt. Diesem verpasst du einen Methode Cancel, die den Abbruch vornimmt. Somit sind die Teile auch sauber getrennt, da du beim Abbruch des BackgroundWorkers nur die Cancel-Methode deines Businessobjektes aufrufen musst. Fertig.
     

Ähnliche Themen

  1. c# BackgroundWorker
    Von xlon im Forum .NET Windows Forms
    Antworten: 8
    Letzter Beitrag: 03.07.09, 14:02
  2. BackgroundWorker
    Von MikeBi im Forum .NET Café
    Antworten: 3
    Letzter Beitrag: 13.03.09, 13:06
  3. Backgroundworker
    Von ganjin im Forum .NET Grafik und Sound
    Antworten: 9
    Letzter Beitrag: 10.07.08, 11:34
  4. Schichtenarchitektur
    Von LL0rd im Forum Coders Talk
    Antworten: 2
    Letzter Beitrag: 21.04.08, 15:17
  5. BackgroundWorker vs. Thread
    Von d-Stench im Forum .NET Application und Service Design
    Antworten: 2
    Letzter Beitrag: 09.12.07, 16:10