Entwickler-Ecke

WinForms - Delaying_Work


Necaremus - Fr 23.07.10 17:01
Titel: Delaying_Work
Huhu,
die logik hinter des, was ich machen möchte habe ich denke ich verstanden, es funktioniert nur irgendwie nicht...

also, ich möchte zb, dass eine textbox bearbeitet wird 2sek nachdem das letzte textchange event abgerufen wurde.
müsste doch prinzipiell so gehen:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
class MyClass
{
 int i = 0;
 public MyClass()
 {
  //stuff
 }
 private void tb_TextChanged(object sender, EventArgs e)
 {
  Thread myLThr = new Thread(()=>
      {
         int myI = ++i;
         Thread.Sleep(200);
         if (myI == i)
          {
            i = 0;
            //the code! X_x
          }
      });
  myLThr.Start();
 }
}


problem: das ding soll mit vielen sachen arbeiten, die dem thread so eigentlich nicht zustehen. kann ich da irgendwie nen event abfeuern, welches eine procedure im mainthread triggert?

hab noch nie mit selbst erstellten events gearbeitet, daher frag ich mal einfach, wäre denke ich die eleganteste methode, oder ginge es anders besser?

so far


Christian S. - Fr 23.07.10 17:07

Hallo!

Ändere den Titel Deines Threads bitte ein bisschen ab. Du darfst da durchaus eine normale Schreibweise so mit Leerzeichen anstatt Unterstrich und mehr als zwei Worten benutzen ;-) Das hilft dann auch anderen, zu erkennen, worum es hier gehen soll. Danke! :-)

Grüße
Christian


Ralf Jansen - Fr 23.07.10 17:18

Zitat:
also, ich möchte zb, dass eine textbox bearbeitet wird 2sek nachdem das letzte textchange event abgerufen wurde.
müsste doch prinzipiell so gehen:


Das würde man üblicherweise mit einem Timer lösen und nicht mit einem Thread. Und dein 'X_x' Code stünde dann einfach im Tick bzw. Elapsed Event (je nachdem für welchen Timer du dich entscheidest).

Moderiert von user profile iconChristian S.: C#- durch Quote-Tags ersetzt (das ist mal was Neues!)