Jag har en tråd som fungerar som en kö hanterare, den startar en händelse om det finns något i kön, händelsen den startar startar i sin tur en timer men när man kör detta genom en tråd så fungerar inte timern. Har gjort ett litet exempel program som har samma "fel",
using System;
using System.Windows.Forms;
using System.Drawing;
using System.Threading;
class TimerDemo:Form
{
System.Windows.Forms.Timer Clock;
int count=0;
Label lbTime=new Label();
static TimerDemo instance=null;
private Thread queueThread=null;
public TimerDemo()
{
instance=this;
this.Controls.Add(lbTime);
queueThread=new Thread(new ThreadStart(this.ThreadWorker));
queueThread.Start();
}
public void ThreadWorker()
{
instance.Show();
}
new public void Show()
{
Clock=new System.Windows.Forms.Timer();
Clock.Interval=1000;
Clock.Start();
Clock.Tick+=new EventHandler(Timer_Tick);
lbTime.Text="New Timer Started";
count=0;
}
public void Timer_Tick(object sender,EventArgs eArgs)
{
lbTime.Text="Ticks: "+(++count);
}
public static void Main()
{
Application.Run(new TimerDemo());
}
}
När man kör detta program så kommer det upp "New Timer Started", altså funktionen Show anroppas, men "Ticks: 1" osv visas aldrig. Om man däremot anroppar Show direkt från konstruktorn utan tråd så fungerar det perfekt.