睡眠直到文件存在/创建

时间:2014-10-09 19:03:01

标签: c# sleep

供参考我看了 Is there a way to check if a file is in use?How to wait until File.Exists?

但我想避免使用SystemWatcher,因为它看起来有些过分。我的应用程序正在调用cmd提示符来创建一个文件,因为我的应用程序无法知道它何时完成,我只想文件不存在就考虑使用Sleep()。

string filename = @"PathToFile\file.exe";
int counter = 0;
while(!File.Exists(filename))
{
    System.Threading.Thread.Sleep(1000);
    if(++counter == 60000)
    {
        Logger("Application timeout; app_boxed could not be created; try again");
        System.Environment.Exit(0);
    }
}

不知何故,我的这个代码似乎不起作用。可能是什么原因?

1 个答案:

答案 0 :(得分:3)

不确定哪部分不起作用。您是否意识到您的循环将运行60,000秒(16.67小时)?您每秒递增一次并等待它达到60000。

尝试这样的事情:

const string filename = @"D:\Public\Temp\temp.txt";

// Set timeout to the time you want to quit (one minute from now)
var timeout = DateTime.Now.Add(TimeSpan.FromMinutes(1));

while (!File.Exists(filename))
{
    if (DateTime.Now > timeout)
    {
        Logger("Application timeout; app_boxed could not be created; try again");
        Environment.Exit(0);
    }

    Thread.Sleep(TimeSpan.FromSeconds(1));
}