问题描述
var proc1 = new processstartinfo();
string anyCommand = " adb logcat - v threadtime emulator-5554 > logcat.log";
proc1.UseShellExecute = true;
proc1.WorkingDirectory = outputDirectory;
proc1.FileName = @"C:\Windows\System32\cmd.exe";
proc1.Verb = "runas";
proc1.Arguments = "/c " + anyCommand;
proc1.WindowStyle = ProcessWindowStyle.Hidden;
Process p = new Process();
p.StartInfo = proc1;
p.Start();
Console.WriteLine(p.Id);
TestLogger.WriteinformationStep("p.Id: " + p.Id);
经过一些步骤,我试图读取文件
string text2 = System.IO.File.ReadAllText(element);
但是我收到错误消息
System.IO.IOException:进程无法访问文件 'C:\ Users \ test \ Documents \ overview9 \ bin \ Debug \ Results \ logcat.log' 因为它正在被另一个进程使用。拆除 : HarVE.Log.FailedStepException:有1个失败的步骤:测试完成 尚未完成
我该怎么办?
我尝试了p.Close();p.Kill();
他们中没有一个为我工作。
解决方法
如果是p.Kill();放在System.IO.File.ReadAllText(element)之后的位置;在System.IO.File.ReadAllText(element)之前写入p.Kill(), 如果放置正确,则似乎其他进程正在读取/写入该文件, 尝试从System.IO使用StreamReader,StreamReader可以读取多次,如下所示:
StreamReader sr = new StreamReader(path_to_file);//replace path_to_file by your txt file path
string text2 = sr.ReadToEnd();