C# System.timer 的问题!!!急高分

hoeung 2010-08-08 10:20:22
Timer是启动了的但是她不做判断间隔1000毫秒,,,他始终不会进入到START!!

private void PollEvent(object state)
{
while (true)
{
Debug.WriteLine("e:" + DateTime.Now);
foreach (object obj in _WorkThreadArray)
{

if (Now == DateTime.Now)
{
Debug.WriteLine("Start@!");

}
Thread.Sleep(1000);
}
}
}
...全文
97 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hoeung 2010-08-08
  • 打赏
  • 举报
回复
private void PollEvent(object source, ElapsedEventArgs e)
{
Debug.WriteLine("e:" + DateTime.Now);
DateTime Now;
foreach (object obj in _WorkThreadArray)
{
Now = ((WorkThreadControlCode)obj).NextTime;
if ((Now - DateTime.Now).TotalSeconds > 1)
{
Debug.WriteLine("Start@!");
//ThreadPool.QueueUserWorkItem(new WaitCallback(DownloadFeedThreadEx),(WorkThreadControlCode)obj);
}
Thread.Sleep(1000);
}

}
bbb332 2010-08-08
  • 打赏
  • 举报
回复
aTimer.Interval = 1000;
aTimer.Enabled = true;
aTimer.Start();
bloodish 2010-08-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hoeung 的回复:]
方法都不行!!
System.Timers.Timer aTimer = new System.Timers.Timer();
aTimer.Elapsed += new ElapsedEventHandler(PollEvent);

aTimer.Interval = 1000;
aTimer.Enabled = true;

这样启动的Timer 主要是 ……
[/Quote]
你的Timer已经设置为1000ms执行一次,何来不做判断之说?
你是不是认为需要在Timer的Elapsed事件里判断是否已经过了1000ms?
这完全混淆了Timer的本意和概念.

如果你真要这么写,我给你写一段:


aTimer.Interval = 1000;

Stopwatch sw = new Stopwatch();
sw.Start();

aTimer.Enabled = true;


private void PollEvent(object state)
{
while (true)
{
Debug.WriteLine("e:" + DateTime.Now);
foreach (object obj in _WorkThreadArray)
{

if(sw.ElapsedMilliseconds > 1000)
{
Debug.WriteLine("Start@!");

}
Thread.Sleep(1000);
}
}
}

guanglin522 2010-08-08
  • 打赏
  • 举报
回复
顶个,关注中。。。
hoeung 2010-08-08
  • 打赏
  • 举报
回复
方法都不行!!
System.Timers.Timer aTimer = new System.Timers.Timer();
aTimer.Elapsed += new ElapsedEventHandler(PollEvent);

aTimer.Interval = 1000;
aTimer.Enabled = true;

这样启动的Timer 主要是 IF条件始终不满足。
bloodish 2010-08-08
  • 打赏
  • 举报
回复
用Stopwatch
wuyq11 2010-08-08
  • 打赏
  • 举报
回复
时间不一致 TimeSpan Now-DateTime.Now
TotalMinutes:返回用分钟计算的TimeSpan值。
TotalSeconds:返回用秒计算的TimeSpan值。
TotalMilliseconds:返回用毫秒计算的TimeSpan值。
guohelv0519 2010-08-08
  • 打赏
  • 举报
回复
要么你的内循环中的数组没有元素,是空的,要么内循环 if 条件不满足。
兔子-顾问 2010-08-08
  • 打赏
  • 举报
回复
try

if((Now-DateTime.Now).TotalSeconds>1)
{
Debug.WriteLine("Start@!");
}

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧