nabend
Ich habe einen BackGroundworker in mein Projekt integriert.
ich habe eine definierte
int ms = XXX;
die wird auch erfolgreich an den Backgroundworker weitergegeben und bei
bw.RunWorkerAsync();
macht er auch seinen XXX sleep.
jetzt ist mien Problem ich bekomme das nicht in einen vernünftige "Sleep" Methode rein.
Also würde gerne eine Funktion haben z.B.
public void sleep(int ms)
{
Messagebox.Show("geht los");
if (bw.IsBusy != true)
{
bw.RunWorkerAsync();
}
Messagebox.Show("vorbei");
}
Hallo halloman,
um ehrlich zu sein, habe ich weder deine Frage, noch deinen Code wirklich verstanden.
Suchst du evtl. nach einem Timer? Die Verwendung von Thread.Sleep (zielst du darauf ab?) deutet meistens auf suboptimales Design hin.
ja genau das meine ich..suche eine Alternative zu thread.sleep wegen dem freez.
Hallo,
und wieso willst du überhaupt schlafen?
Entweder du verwendest dafür einen Timer oder du verwendest dafür einen Timer =)
Damit kannst du Aufgaben in einem bestimmten Intervall aufrufen lassen
Zum Thema freeze siehe: [FAQ] Warum blockiert mein GUI?
Gruß
Michael
na Ok timer hört sich ja gut an ^^
aber Timer kann ich ja auch nur sagen er soll alle XXms ticken oder nicht?
er soll ja jedesmal andere sachen machen
zum Beispiel
Sleep.Interval = 3000;
Sleep.Start();
so würde der doch 3sek laufen dann soll er z.B. das machen
MessageBox.Show("3 sek sind um");
wie geht das
so würde der doch 3sek laufen dann soll er z.B. das machen
Naja - das steht in der :rtfm: Doku: Aboniere das Tick Event und schreibe deinen Code in dessen Handler.
Bitte keine Nachfragen zu Threads per PN!
ich versteh die Fachsprache nicht so. Was bedeutet denn abonieren?
soweit habe ich das ja
Sleep.Interval = 2500; Sleep.Tick += new EventHandler(Sleep_tick); Sleep.Start(); public void Sleep_tick(int ms) { }
aber ich möchte keine Methode aufrufen sondern einfach im Code fortfahren
Alles zu Events kannst du nachlesen in [FAQ] Eigenen Event definieren / Information zu Events.
Windows-Forms Programmierung erfolgt generell ereignisgesteuert: Statt den Code sequentiell abarbeiten zu lassen, legt man über die Events sozusagen fest, worüber man sich benachrichtigen lassen möchte.
In deinem Fall sollte es für dich keinen Unterschied machen (außer, dass dein GUI nicht blockiert), ob du 2500 Millisekunden wartest oder ob du nach 2500 Millisekunden eine Methode aufrufen lässt, in die du genau den Code schreiben kannst, den du ansonsten nach dem Sleep schreiebn würdest.
Bitte schaue aber in die Doku: Dort, und generell auch im Internet finden sich zahlreiche Beispiele, wie du den Timer richtig verwendest.
==> Geschlossen