日期:2014-05-18  浏览次数:20830 次

C#计数器,定时器
winform程序。我用while (true)
  {
  filecount = System.IO.Directory.GetFiles(Utils._receivePath, "*.bin", SearchOption.TopDirectoryOnly).Count();//检索接收目录中的文件数
  if (filecount == 50)
  break;
  Thread.Sleep(100);
  }来判断接收目录中收到的文件个数,收够50个的时候再进行下面的操作,现在我需要写一个计数器,来记录sleep了多少次,比如我想用定时器来定它到1分钟的时候就报超时,那也就是sleep了600次,即,当计数器记到600的时候,定时器就被触发。求定时器与计数器的写法!

------解决方案--------------------
int count = 0;
winform程序。我用while (true)
{
filecount = System.IO.Directory.GetFiles(Utils._receivePath, "*.bin", SearchOption.TopDirectoryOnly).Count();//检索接收目录中的文件数
if (filecount == 50)
break;
Thread.Sleep(100);
count ++;
}

判断count即可
------解决方案--------------------
while (sleepcount<600)
{

Thread.Sleep(100);线程停止 不是计时器
计时器的话就是另一种设计思路了。

System.IO.Directory.GetFiles 如果结果不变,我就真心不知道你这个算法的意义是什么
------解决方案--------------------
探讨

引用:

while (sleepcount<600)
{

Thread.Sleep(100);线程停止 不是计时器
计时器的话就是另一种设计思路了。

System.IO.Directory.GetFiles 如果结果不变,我就真心不知道你这个算法的意义是什么

谢谢你!
因为我这个程序是给一个发送设备写个测试工具,这个测试工具能自动生成随机二进制……

------解决方案--------------------
思路有点问题啊。。。你计数器和计时器写在一起?
最简单的一个问题,如果我在0.05秒里边传过来两个文件。。。咋整?会丢包的

比较好的思路是:让接收文件的方法处于挂起状态,这样信号量传进来就可以立刻处理,处理完成后立刻又转为挂起侦听状态。

计时器,可以写得后台线程中跑着,到60秒委托前台线程结束。