System.Windows.Forms.Timer 会停止执行任务吗

红帽小小 2008-01-24 03:47:34
我有个处理图片的DLL
然后添加了一个System.Windows.Forms.Timer
每3秒处理一张图片
如果上3秒的图片还没处理好
那接下来的3秒还会继续处理这张图片吗?
还是停止处理这张图片,去处理另外一张图片了
...全文
190 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
红帽小小 2008-01-25
  • 打赏
  • 举报
回复
哦,知道了,太感谢楼上的啦
yzxdc 2008-01-25
  • 打赏
  • 举报
回复
好吧,我来说下Timer的机制。
Timer的机制就是每隔一段时间触发一个事件,但是该事件的并不是立即就会响应的。通常情况下,因为程序处理得很快,cpu基本处于空闲状态,所以TimerTick立即就能响应。但是如果程序处于楼主所说的长时间处理过程中,而又是单线程的话,这个TimerTick就会处于消息队列中,要等到当前流程处理完了,才会处理下一个事件响应
红帽小小 2008-01-25
  • 打赏
  • 举报
回复
我知道我写的不好啦,谁告诉我一下
是否会在未处理完一张图片的情况下去处理另外一张图片,不继续处理这张图片了
Error_Code 2008-01-24
  • 打赏
  • 举报
回复
个人感觉这样比用Timer好

int file=1;
int fileSum=100;
bool done=false;

while(!done)
{
//处理第file张图
//do something
if(file==fileSum)
{done=true;break;}
file++;//也是递增 但是是处理完以后再递增 不会出现timer那样的问题
}
红帽小小 2008-01-24
  • 打赏
  • 举报
回复
恩,2楼说的对
红帽小小 2008-01-24
  • 打赏
  • 举报
回复
我也觉得程序写的很不好,正在改进中
我就是想知道是否会在未处理完一张图片的情况下去处理另外一张图片,不继续处理这张图片了
如过是这样,我有好多数据都不完整了,很郁闷
Error_Code 2008-01-24
  • 打赏
  • 举报
回复
同意楼上的 用队列比较好
LZ这样处理的话 应该是用Timer里的递增变量来控制哪张图吧
Timer下一次Tick的时候 图片源就变了
hellobaobao 2008-01-24
  • 打赏
  • 举报
回复
应该是先处理完后才继续处理新的图片吧我也不太确定,你可以故意把timer的时间间隔设短点看看系统是
怎么操作的什么东西还是自己测试一下比较稳妥。
还有我觉得你这样设计程序不好,你应该通过队列来处理。

110,536

社区成员

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

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

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