Eine längere Berechnung legt alles lahm...

24/03/2008 - 22:38 von Andreas Mahub | Report spam
Hi,

...und dafür gibt es System.Threading. Ich habe das auch irgendwie mal
testweise geschafft.
Jetzt ist es aber so, dass ich eine Klasse habe, in der eine sehr lange
Berechnung gemacht wird Dauer ca. 1-2 Minuten. In dieser Zeit ist meine
ganze Windows-Anwendung (MDI) vollkommen lahmgelegt.

Jetzt wollte ich folgendes machen:
Ein zusàtzliches Fenster öffnen welches mir anzeigt bei welchem Frame er
gerade ist und wieviel Frames noch kommen bzw. insgesamt berechnet werden
müssen. Die Rendering-Klasse soll bei jedem Erfolgreichen Frame ein
RaiseEvent machen. Mit Events und RaiseEvents habe ich mich dieses
Wochenende sehr sehr viel beschàftigt. Daher bin ich auch auf diese Idee
gekommen. Sie ist doch okay, oder?

ABER: Wie mache ich das jetzt?
Die Rendering-Klasse wird aufgerufen, ihr werden alle Daten übergeben und
dann mit der Methode Start wird das berechnen gestartet. Wo gehört nun
System.Threading hin? In die Rendering-Klasse wo die Schleifen sind, oder in
das WindowsForms wo ich die Klasse aufrufe?

Würde mich über eure Hilfe sehr freuen. :-)

Gruß
Andy
 

Lesen sie die antworten

#1 Gerold Mittelstädt
24/03/2008 - 23:08 | Warnen spam
Hallo Andreas!

Andreas Mahub schrieb:

...und dafür gibt es System.Threading. Ich habe das auch irgendwie mal
testweise geschafft.
Jetzt ist es aber so, dass ich eine Klasse habe, in der eine sehr
lange Berechnung gemacht wird Dauer ca. 1-2 Minuten. In dieser Zeit
ist meine ganze Windows-Anwendung (MDI) vollkommen lahmgelegt.

Jetzt wollte ich folgendes machen:
Ein zusàtzliches Fenster öffnen welches mir anzeigt bei welchem Frame
er gerade ist und wieviel Frames noch kommen bzw. insgesamt berechnet
werden müssen. Die Rendering-Klasse soll bei jedem Erfolgreichen
Frame ein RaiseEvent machen. Mit Events und RaiseEvents habe ich mich
dieses Wochenende sehr sehr viel beschàftigt. Daher bin ich auch auf
diese Idee gekommen. Sie ist doch okay, oder?



Ja

ABER: Wie mache ich das jetzt?
Die Rendering-Klasse wird aufgerufen, ihr werden alle Daten übergeben
und dann mit der Methode Start wird das berechnen gestartet. Wo
gehört nun System.Threading hin? In die Rendering-Klasse wo die
Schleifen sind, oder in das WindowsForms wo ich die Klasse aufrufe?



In die Rendering-Klasse. Bei Start stößt Du den Thread dann nurnoch an.

Pseudocode:

Private t New Thread(AddressOf Render)

Public Sub Start()
t.Start()
End Sub

Private Sub Render()
Do

RaiseEvent ...
Loop
End Sub

Im Formular wird die Klasse normal über Private WithEvents Renderer As
RenderingKlasse deklariert und normal angesprochen.


Viele Grüße!

Ähnliche fragen