检查文件是否准备就绪的次数

本文关键字:准备就绪 文件 是否 检查 | 更新日期: 2023-09-27 18:32:41

我正在打印PDF的PrintDocument。然后,我将这个PDF存储在MS SQL表中。在将文档插入列之前,我必须确保文档已"打印"。我有以下代码来检查文件是否"可用":

public static bool IsFileReady(String sFilename)
{
    try
    {
         using (FileStream inputStream = File.Open(sFilename, FileMode.Open, FileAccess.Read, FileShare.None))
         {
              if (inputStream.Length > 0)
              {
                  return true;
              }
              else
              {
                   return false;
              }
          }
    }
    catch (Exception)
    {
          return false;
    }
}

我想为它所需的时间或检查文件是否准备就绪的次数添加某种上限。如果打印机出现故障,则线程将永远等待。我该如何实现它?

检查文件是否准备就绪的次数

如果达到最大重试次数或已过最大时间,则此代码将退出循环:

    private const int MAX_RETRIES = 100;
    private const int MAX_RETRY_SECONDS = 120;
    public static bool IsFileReady(String sFilename)
    {
        int tryNumber = 0;
        DateTime endTime = DateTime.Now + new TimeSpan(0, 0, MAX_RETRY_SECONDS);
        while (tryNumber < MAX_RETRIES && DateTime.Now < endTime)
        {
            try
            {
                using (FileStream inputStream = File.Open(sFilename, FileMode.Open, FileAccess.Read, FileShare.None))
                {
                    if (inputStream.Length > 0)
                    {
                        return true;
                    }
                }
            }
            catch (Exception)
            {
                //Swallow Exception
            }
            //Slow down the looping 
            System.Threading.Thread.Sleep(500);
            tryNumber += 1;
        }
        return false;
    }