0

我尝试在执行 net use 命令后测试目录是否存在,但 checkMappedDrive() 在 mapDrive() 完成驱动器映射之前执行。

public void mapDrive(String driveChar, String server, String user, String password){
    String path = "use "+driveChar+": "+server +" /user:"+user+ " "+password;
    proc.StartInfo.FileName = "net";
    proc.StartInfo.Arguments = path;
    proc.StartInfo.UseShellExecute = false;
    proc.Start();

   if(checkMappedDrive(driveChar)){
      //nice
   }else{
      //error
   }

}

public bool checkMappedDrive(String driveChar){

   String drive = Path.GetPathRoot(driveChar.ToUpper()+":\\"); 
   Debug.WriteLine("Checking: " + drive);
    if (!Directory.Exists(drive)){
            proc.Kill();
            //bad
    return false;
    }
      //nice
    return true;
}
4

2 回答 2

2

你可以使用Process.WaitforExit

public void mapDrive(String driveChar, String server, String user, String password){
    String path = "use "+driveChar+": "+server +" /user:"+user+ " "+password;
    proc.StartInfo.FileName = "net";
    proc.StartInfo.Arguments = path;
    proc.StartInfo.UseShellExecute = false;
    proc.Start(); 
    proc.WaitForExit(10000); // wait 10 seconds at a maximum

   if(checkMappedDrive(driveChar)){
      //nice
   }else{
      //error
   }

}
于 2016-11-28T08:31:12.037 回答
0

用于proc.WaitForExit();等待进程完成

MSDN:Process.WaitForExit 方法

于 2016-11-28T08:31:37.010 回答