【发布时间】:2014-01-15 18:02:53
【问题描述】:
我正在尝试快速运行大量的 adb shell 命令。基本上,我想启动 adb shell,然后快速连续运行一堆命令。我可以以某种方式重用流程吗?我想启动 adb shell 并在运行时更改命令文本。
问题在于为每个命令创建一个单独的进程会启动大量进程并最终导致 adb 对我产生影响。
static void Main(string[] args)
{
const string AdbBroadcast = "shell am broadcast <my_cmd>";
int broacastIndex = 0;
while(true)
{
Console.WriteLine("Outputting " + broacastIndex);
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "adb";
startInfo.Arguments = AdbBroadcast;
process.StartInfo = startInfo;
process.Start();
process.WaitForExit();
Thread.Sleep(250);
broacastIndex++;
}
}
【问题讨论】:
-
我不知道这是否有助于解决您的具体错误,但您应该在完成处理后调用 .Dispose (在“WaitForExit”之后)。如果这个循环有很多迭代,你可能会在操作系统级别用完进程句柄。处理过程应释放句柄,以便可以重复使用。