【发布时间】:2014-09-22 09:20:49
【问题描述】:
在 C# 中使用DispatcherTimer 或Thread.Sleep 哪个更有效?
我可以使用DispatcherTimer:
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds(20);
timer.Tick += timer_Tick;
timer.Start(); // do something every 20 seconds
或者,我可以使用Thread.Sleep:
while(true) {
Thread.Sleep(20000);
// do something every 20 seconds
}
我们应该在哪些情况下使用它们?有什么最佳做法吗?
编辑:根据第一个答案,我需要补充一点,我正在开发的应用程序没有 UI(所以阻塞线程没有问题),因为它是一个后台跟踪器,只是将其数据写入日志文件。
【问题讨论】:
-
在告诉线程在给定时间内什么都不做的上下文中,您对“效率”的定义是什么?
-
你在用大炮压扁一只蚊子。从控制台应用程序项目模板开始。项目 + 属性,应用程序选项卡,输出类型 =“Windows 应用程序”以删除控制台。
标签: c# multithreading timer