C#自动化停止过程

问题描述

我有启动流程的C#自动代码

 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();