"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

VB: Problem

Nurmi 17.11.2003 - 14:13 574 9
Posts

Nurmi

OC Addicted
Avatar
Registered: Jun 2000
Location: Linz (Hauptplatz..
Posts: 810
da ich mich gerade erst 20 min mit VB spiele und schon bei einem Problem nicht weiterkomme - hätte ich 2 Fragen:

Ich will, wenn der Button1 geclickt wird - daß sich der ButtonLabel von Start auf Stop ändert und die Schleife die dann gestartet wird bei erneuten Click stopt.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Button1.Text = "Stop"
While (?????)
Sleep(2000)
DuDas()
End While
End Sub

naja was er jetzt macht ist daß er mir den Button1.Text erst wenn die Methode beendet wird neu setzt und wenn ich einmal in der Schleife bin reagiert die Oberfläche auf nichts mehr...(hätte es mal mit ner globalen booleanvariable probiert ;))

Kann mir da wer ein paar Tips geben oder zumindest eine gute Tutorial Seite wo das Problem erläutert wird ?

Hab nicht die Nerven da lange zu suchen bzw. mich weiter in VB einzulesen ;)

MfG
NuRmi

Nurmi

OC Addicted
Avatar
Registered: Jun 2000
Location: Linz (Hauptplatz..
Posts: 810
so hab jetzt ein bischen weitergeproggt und dabei ist mir aufgefallen - daß wenn mein algorithmus läuft ich auf der GUI weder einen button clicken kann noch das Fenster verschieben kann - is a bissl bled ;)

weis wer wie man das ändern kann ? bzw was da das problem ist ?

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25423
welches vb? wennst ned .net hast wirds schwer. weil vb 6.0 hat keine threading funktionen/klassen. du könntest über eine COM DLL ausweichen.

Nurmi

OC Addicted
Avatar
Registered: Jun 2000
Location: Linz (Hauptplatz..
Posts: 810
hab schon des dotnet nur ka wie das threading funkt - kann man das explizit einstellen oder muaß man danach proggn ;) ?
ich weis sehr sehr gimpy gefragt ;)
Bearbeitet von Nurmi am 17.11.2003, 18:38

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25423
2teres..

mg_shadow

live and die in starlight
Avatar
Registered: Aug 2001
Location: A, ST, Bez. Weiz
Posts: 964
erklär mal genau was du machen willst!
denn deine erste erklärung erscheint mir weder sinnvoll noch logisch!

aber vermutlich wäre der beste weg über einen timer! und der button starten / stoppt den timer! damit kann sich die GUI auch refreshen!

mg_shadow

live and die in starlight
Avatar
Registered: Aug 2001
Location: A, ST, Bez. Weiz
Posts: 964
@mat ich würd keinem VB neuling so komplizierte lösungsvorschläge machen!

ich hab zwar im .net noch nicht programmiert, aber mutlithreading ist meines erachtens etwas zu hoch gegriffen für jemanden der 20min VB erfahrung hat!

JC

Administrator
Disruptor
Avatar
Registered: Feb 2001
Location: Katratzi
Posts: 9067
Zitat von Nurmi
so hab jetzt ein bischen weitergeproggt und dabei ist mir aufgefallen - daß wenn mein algorithmus läuft ich auf der GUI weder einen button clicken kann noch das Fenster verschieben kann - is a bissl bled ;)

weis wer wie man das ändern kann ? bzw was da das problem ist ?
Das ist wegen der Sleep-Anweisung. Wozu brauchst du die denn überhaupt?

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25423
Zitat
erklär mal genau was du machen willst!
denn deine erste erklärung erscheint mir weder sinnvoll noch logisch!
er will einen algorithmus laufen lassen und trotzdem gleichzeitig an der gui rumfummeln.

Zitat
aber vermutlich wäre der beste weg über einen timer! und der button starten / stoppt den timer! damit kann sich die GUI auch refreshen!
timer wäre hier ein großes nono weil die gui auf einem messagesystem basiert, das ebenfalls geblockt wird. es könnte auch sein das dus andersrum meinst: timer ruft den algo auf.. wäre kontraproduktiv, weil er garantiert will dass der algo volle cpupower bekommt und möglichst schnell abläuft.. obwohl mich die idee irgendwie geil macht :D

in vb .net is threading ned allzu schwer.. ein paar tutorials und das geht schon. deshalb is es ja auch vb.

also besser ein schwerer lösungsweg als ein falscher :p

mg_shadow

live and die in starlight
Avatar
Registered: Aug 2001
Location: A, ST, Bez. Weiz
Posts: 964
an einen Timer hab ich wegen dem Sleep(2000) gedacht!
ich war der meinung er will irgendwas haben was alle 2 sekunden irgendwas macht! (deshalb hab ich auch gemeint das die gui sich refreshen kann wenn das timerintervall 2 sek ist)

wenn er was haben will was nebenbei rechnet ist mutlithreading natürlich der richtige weg!
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz