我正在开发一个程序,我需要从不同的线程激活一个计时器.我已经将代码缩短到下面这个例子.
static class Program
{
public static System.Windows.Forms.Timer TimerVideo = new System.Windows.Forms.Timer();
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
TimerVideo.Interval = 1000;
TimerVideo.Tick += new EventHandler(TimerVideo_Tick);
new Thread(() =>
{
test RunTimer = new test();
RunTimer.StartTimer();
}).Start();
Application.Run();
}
private static void TimerVideo_Tick(object sender, EventArgs e)
{
Console.WriteLine("Running");
}
}
class test
{
public void StartTimer()
{
Program.TimerVideo.Start();
}
}
Run Code Online (Sandbox Code Playgroud)
即使我必须在课堂上对计时器进行编码对我来说没问题,但我确实尝试过,但它也没有用,即计时器没有触发,也没有打印到控制台.
System.Windows.Forms.Timer意味着从UI线程运行.如果你想要一个在不同线程上触发的计时器,你可以使用System.Timers.Timer,例如:
TimerVideo = new System.Timers.Timer();
TimerVideo.Interval = 1000;
TimerVideo.Elapsed += (o, e) => Console.WriteLine("Running");
TimerVideo.Start();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
725 次 |
| 最近记录: |