C# 在一个构造中向Exe发出单独的参数

C# 在一个构造中向Exe发出单独的参数,c#,adb,C#,Adb,我目前正在尝试通过管道将多个参数传输到google sdk中的adb.exe文件。我的输入示例如下: adb shell getprop ro.build.version.release 亚行壳牌getprop ro.product.brand 从我的应用程序中输出正确的。但是,问题是我想填充一个信息列表视图,而我目前遇到的问题是如何通过管道命令来获得所需的输出。我目前有: var proc = new Process { StartIn

我目前正在尝试通过管道将多个参数传输到google sdk中的
adb.exe
文件。我的输入示例如下:

adb shell getprop ro.build.version.release

亚行壳牌getprop ro.product.brand

从我的应用程序中输出正确的。但是,问题是我想填充一个信息列表视图,而我目前遇到的问题是如何通过管道命令来获得所需的输出。我目前有:

 var proc = new Process
            {
                StartInfo = new ProcessStartInfo
                {
                    FileName = "Resources/adb.exe",
                    Arguments = "devices",
                    UseShellExecute = false,
                    RedirectStandardOutput = true,
                    CreateNoWindow = true
                }
            };
            proc.Start();
            string Output = proc.StandardOutput.ReadToEnd().ToString();
目前返回的结果与预期一致,但我希望从管道中获得多个结果,例如:

Arguments = "devices ro.build.version.release ro.product.brand"
即使直接将管道传输到命令提示符中,这也无济于事

adb壳牌getprop设备ro.build.version.release ro.product.brand

empty,我提出了一个(假设)负载沉重的解决方案,即将executional的初始化移到它自己的函数中,以便多次调用。见下面的代码:

    public string GetInfo(string CommandArg)
    {
        var proc = new Process
        {
            StartInfo = new ProcessStartInfo
            {
                FileName = "Resources/adb.exe",
                Arguments = CommandArg,
                UseShellExecute = false,
                RedirectStandardOutput = true,
                CreateNoWindow = true
            }
        };
        proc.Start();
        return proc.StandardOutput.ReadToEnd().ToString();
    }


    public void SetDefineInformation()
    {
        AndroidVersion = decimal.Parse(GetInfo("ro.build.version.release"));
        DeviceModel = GetInfo("ro.product.device");
        ...
    }

对我来说,这似乎是一个负载繁重的任务,不断打开一个可执行文件,让它关闭,然后重新打开,直到任务完成。是否有一个全面的解决方案,可以让一个人将多个参数传递给一个执行程序并获得所需的结果?

adb可以启动一个shell,这样您就可以使用
adb shell创建shell,然后直接写入它

您提出的“优化”不会带来可测量的性能增益。
adb
代码非常有效。它引入的开销非常小。特别是在客户部分。大部分延迟都来自于等待设备的响应

因此,停止过度复杂化,只需运行多个
adb shell
会话即可。如果加载
adb
二进制文件让您非常烦恼,只需使用套接字直接与
adb
服务器通信即可。请查看以了解如何在
c#
中执行此操作。或者直接使用图书馆


至于优化查询多个系统属性-只需使用
adb shell getprop
命令即可一次提取所有属性。

感谢您提供的指针。我一定会研究这个方法!