C#Directory.CreateDirectory停止工作

时间:2018-04-02 06:41:03

标签: c# create-directory

我有一个C#应用程序,它可以在许多PC,笔记本电脑上正常工作。但是,我复制到我客户的电脑(4TB硬盘 - Windows 10家庭版),我的应用程序停止工作!

我尝试将MessageBox.Show()放在某个行中以查找损坏的位置。它停在Directory.CreateDirectory(@"D:\\mypath")

PC有D:,我不知道它为什么会坏掉。

这是我的代码:

string now = DateTime.Now.ToString("HH_mm_ss");
string strDuongDan;

strDuongDan = @"D:\VideoLuuTru\" + DateTime.Now.Month.ToString() + "_" + DateTime.Now.Year.ToString();

if (!Directory.Exists(strDuongDan))
    Directory.CreateDirectory(strDuongDan);

string strDuongDan2 = strDuongDan + "\\" + DateTime.Now.ToString("dd"); ;

if (!Directory.Exists(strDuongDan2))
    Directory.CreateDirectory(strDuongDan2);

如何准确追踪错误,我的代码有什么问题?它在很多PC上运行得很好,但是这台PC坏了。

我的问题是否与大硬盘空间有关?

我的客户的IT人员在我的笔记本电脑(Windows 10 Home)上安装了我的应用程序,并在此电脑上安装了相同的窗口。我的应用程序在他的笔记本电脑上运行没有错误

谢谢!

修改 我的功能和我的错误:

功能:

 public void makevideo()
        {
            string now = DateTime.Now.ToString("HH_mm_ss");
            string strDuongDan;

            strDuongDan = @"D:\VideoLuuTru\" + DateTime.Now.Month.ToString() + "_" + DateTime.Now.Year.ToString();

            if (!Directory.Exists(strDuongDan))
                Directory.CreateDirectory(strDuongDan);

            string strDuongDan2 = strDuongDan + "\\" + DateTime.Now.ToString("dd"); ;
            if (!Directory.Exists(strDuongDan2))
                Directory.CreateDirectory(strDuongDan2);
        }

通话功能

 ThreadStart childref = new ThreadStart(() => makevideo());

 Thread childThread = new Thread(childref);

 try { childThread.Start(); }
 catch (Exception ex)
 {
     MessageBox.Show(ex.ToString());
  }

错误: **

Application: camera.exe Framework Version: v4.0.30319 Description: The process was terminated due to an unhandled exception. 
Exception Info: System.IO.FileNotFoundException at camera.Form1.makevideo() at camera.Form1.<Form1_Load>b__6_0() at         System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext,
System.Threading.ContextCallback, System.Object, Boolean) at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, 
System.Threading.ContextCallback, System.Object) at 
System.Threading.ThreadHelper.ThreadStart()

**

1 个答案:

答案 0 :(得分:6)

我通常不建议像这样抓错误

但是你可以使用记录器,或者你真的必须将错误推送到MessageBox。至少你会知道异常

或者您可以检查事件日志查看器,如果您的应用程序崩溃,它将为您提供有关发生的事情的线索。

最后,很可能这是一个许可的事情,但谁知道呢。确保您的客户端已授予该目录适当的权限或以提升的权限运行您的应用程序

try
{
    // Note you don't need to check if a directory exists before you create it
    // it does it for you
    // if (!Directory.Exists(strDuongDan))
    Directory.CreateDirectory(strDuongDan);
}
catch(Exception ex)
{
   // log here
   // or
   MessageBox.Show("Error : " + ex.Message)
}

Directory.CreateDirectory Method (String)

<强>例外

  
      
  • IOException

         
        
    • path指定的目录是一个文件。
    •   
    • 网络名称未知。
    •   
  •   
  • UnauthorizedAccessException

         
        
    • 来电者没有所需的权限。
    •   
  •   
  • ArgumentException

         
        
    • path是一个零长度字符串,仅包含空格,或包含一个或多个无效字符。您可以查询无效   使用GetInvalidPathChars方法的字符。

    •   
    • 路径前缀或仅包含冒号字符(:)。

    •   
  •   
  • ArgumentNullException

         
        
    • 路径为空。
    •   
  •   
  • PathTooLongException

         
        
    • 指定的路径,文件名或两者都超过系统定义的最大长度。例如,在基于Windows的平台上,路径必须是   少于248个字符,文件名必须小于260   字符。
    •   
  •   
  • DirectoryNotFoundException

         
        
    • 指定的路径无效(例如,它位于未映射的驱动器上)。
    •   
  •   
  • NotSupportedException

         
        
    • path包含一个冒号字符(:),它不属于驱动器标签(&#34; C:\&#34;)。
    •   
  •