Toon posts:

[C#] Timer start niet in anderen Thread

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een while lus waar ik conntection requests accept... ontvang wat data en verzend weer is wat, na het verwerken van de data moet er een timer gestart worden. Deze roep ik gewoon aan met 'timerNaam'.Start();
De timer word gestart maar gelijk na de eerst tick stopt ie er al weer mee. De while lus zit niet in de main-thread maar die functie voer ik uit in een nieuwe thread.
De timer blijft wel lopen als ik na 'timerNaam'.Start(); een messagebox laat zien. Maar zodra ik bij de messagebox op 'OK' klik stop de timer weer.

Ik heb al geprobeert de timer ook in een apparte thread aan te spreken. dus:
code:
1
2
Thread t = new Thread(new ThreadStart(timer1.Start));
t.Start();


Ook heb ik geprobeert de timer.Start(); in een custom event te propen en in de while het event te triggeren. Maar dit alle zonder succes.

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:14
De timer moet je in de thread steken waar je hem nodig hebt.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Hmz.. dat lukt dus niet echt... is er een anderen oplossing? Of kan ik hem laden in de MainThread ofzo?

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:14
Waarom lukt dat niet zo? Waarom zit die timer in een andere thread (blijkbaar zit er niets anders in die thread)?

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ik roep de timer.Start(); functie aan in de listen thread van me server. Dus in een while lussie waar ik connections accepteer en verwerk.

[ Voor 4% gewijzigd door Verwijderd op 14-12-2003 20:09 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:14
Probeer het eens zo:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public class MyThreadClass
{

   private Timer MyTimer;

   public MyThreadClass()
   {
        MyTimer = new Timer(new TimerCallBack(blaTimerMethod, null, ..... );
   }

   public void BeginExecute()
   {
        MyTimer.Change(0, 2000);
        while( true )
        {
             System.Threading.Thread.Sleep(1000);
        }
   }  

    private void  blaTimerMethod(object sender)
    {
          // do stuff when the timer fires.
    }
}

// ------
public class MyMainApp
{
     public static void Main()
     {
           MyThreadClass c = new MyThreadClass();
       
           Thread t = new Thread(c.BeginExecute());

            t.Start();
     }
}


Disclaimer: 'k heb zelf niets uitgetest ofzo hoor.

[ Voor 8% gewijzigd door whoami op 14-12-2003 21:30 ]

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:14
Hoe ziet de body van je ThreadStart method er eigenlijk uit?
Wordt die method direct beëindigd ofzo?

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:14
Wat ik me nog afvraag:
Waarom gebruik je eigenlijk zowel een timer als een thread? Je kan toch je thread functie een aantal seconden laten sleepen ipv een timer te gebruiken?

https://fgheysels.github.io/

Pagina: 1