C# Directory.CreateDirectory导致System.IO错误文件写入速度过快

C# Directory.CreateDirectory导致System.IO错误文件写入速度过快,c#,C#,我有一个无法在实验室/开发环境中重现的问题 测试版用户在文件复制过程中报告以下错误 System.IO.DirectoryNotFoundException:找不到路径“C:\ProgramData…”的一部分 这一行代码是: Directory.CreateDirectory(path); 现在我在猜测这里发生了什么。CreateDirectory将操作交给操作系统。在我的测试和开发机器上有大量的资源,操作系统会立即创建目录 在beta用户的机器上,它的资源更具挑战性,在几毫秒内,甚至一整秒

我有一个无法在实验室/开发环境中重现的问题

测试版用户在文件复制过程中报告以下错误

System.IO.DirectoryNotFoundException:找不到路径“C:\ProgramData…”的一部分

这一行代码是:

Directory.CreateDirectory(path);
现在我在猜测这里发生了什么。CreateDirectory将操作交给操作系统。在我的测试和开发机器上有大量的资源,操作系统会立即创建目录

在beta用户的机器上,它的资源更具挑战性,在几毫秒内,甚至一整秒钟内,它都不会创建目录

在此期间,我的应用程序已经移动,并期待着文件夹会在那里。 CopyTo(路径,true)

我的第一个问题是我是否正确地连接了这些点

第二个问题是,如果是这样,我应该如何处理

  • 休眠应用程序并监视文件夹创建标志的操作系统事件,然后继续。这似乎是一个复杂的解决方案

  • 在应用程序中睡眠。启动一个探测文件夹的新线程。当它存在时,终止线程,然后继续。也许不是一个新的线程,但在主线程相同的想法

  • 还有其他想法吗


    TIA

    使用FileSystemWatcher.Created事件在创建目录时给您回电话。您需要监视父目录中的活动

    msdn示例代码:
    您的评估可能是正确的。在
    Directory.CreateDirectory()调用返回和在文件系统上实际创建目录之间可能存在延迟。这是本文讨论的内容:

    解决方法是在调用
    CreateDirectory()
    之后,在循环中调用
    Directory.Exists()
    (),如下所示:

    Direcotry.CreateDirectory(path);
    int waitCount = 10;
    do {
       if (Directory.Exists(path))
       {
          break;
       }
    
       Thread.Sleep(100); // sleep 100ms
       waitCount--;
       if (waitCount <= 0)
       {
          throw new Exception("Failed to create directory");
       }
    } while(true);
    
    Direcotry.CreateDirectory(路径);
    int waitCount=10;
    做{
    if(目录存在(路径))
    {
    打破
    }
    Thread.Sleep(100);//睡眠100ms
    等待计数--;
    
    如果(waitCount当用户创建新文件夹时,您可以使用FileSystemWatcher进行捕获。您如何使用环境变量设置
    路径
    ?您能否向我们显示设置路径的代码?
    与此同时,我的应用程序已经移动,并且希望文件夹在那里。
    如果没有lo,无法确定这一点查看创建目录和访问同一目录的代码。您可以围绕这两个代码编写一些日志语句,并在出现错误时检查它们。类似:今天似乎是。。