使用AndroidLib.dll调用进程后无法退出

使用AndroidLib.dll调用进程后无法退出,android,shell,Android,Shell,我正在开发一个HTC One Max实用程序,该实用程序使用AndroidLib.dll AndroidLib Git集线器位置: 下面的类是我的代码用来执行adb shell root命令的类 public static void ExecuteAdbShellCommandInputString(Device device, params string[] inputLines) { lock (_lock) { Command

我正在开发一个HTC One Max实用程序,该实用程序使用AndroidLib.dll

AndroidLib Git集线器位置:

下面的类是我的代码用来执行adb shell root命令的类

public static void ExecuteAdbShellCommandInputString(Device device, params string[] inputLines)
    {
        lock (_lock)
        {
            Command.RunProcessWriteInput(AndroidController.Instance.ResourceDirectory + ADB_EXE, "shell", inputLines);
        }
    }

internal static void RunProcessWriteInput(string executable, string arguments, params string[] input)
    {
        using (Process p = new Process())
        {
            p.StartInfo.FileName = executable;
            p.StartInfo.Arguments = arguments;
            p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            p.StartInfo.CreateNoWindow = true;
            p.StartInfo.UseShellExecute = false;

            p.StartInfo.RedirectStandardInput = true;

            p.Start();

            using (StreamWriter w = p.StandardInput)
                for (int i = 0; i < input.Length; i++)
                    w.WriteLine(input[i]);

            p.WaitForExit();
        }
    }
我在Shell中添加了exit命令退出Root,并添加了另一个命令退出adb Shell


感谢您的帮助。

通过实施超时,我能够解决此问题。WaitForExit(1000)

DLL是Windows库,无法在基于Linux的环境(如Android)上轻松使用。
        private void unlockboot_Click(object sender, EventArgs e)
    {
        button1.Enabled = false; // to prevent user from spamming the unlock button
        button2.Enabled = false;

        string serial;
        // Setting up the Android ADB Daemon and getting the device serial.
        android = AndroidController.Instance;
        serial = android.ConnectedDevices[0];
        device = android.GetConnectedDevice(serial);
        // Send message to Console Output RichTextBox and executing commands.
        richTextBox1.Clear();
        richTextBox1.Text = "Begin Bootloader Flag Unlock Process.\n";
        Adb.ExecuteAdbShellCommandInputString(device, "su", @"echo -ne 'HTCU' | dd of=/dev/block/mmcblk0p3 bs=1 seek=33796", "exit", "exit");
        richTextBox1.Text += "Completed... Exiting ADB Root.\n";
        button1.Enabled = true;
        button2.Enabled = true;
        button3.Enabled = true;
        // Killing the ADB Daemon and closing out resources.
        android.Dispose();
        richTextBox1.Text += "Your Bootloader has been Unlocked.\n";
        richTextBox1.ScrollToCaret();
    }