- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
来自 MSDN 使用新创建进程的 stdoutput 的例子:
// This is the code for the base process
Process myProcess = new Process();
// Start a new instance of this program but specify the 'spawned' version.
ProcessStartInfo myProcessStartInfo = new ProcessStartInfo(args[0], "spawn");
myProcessStartInfo.UseShellExecute = false;
myProcessStartInfo.RedirectStandardOutput = true;
myProcess.StartInfo = myProcessStartInfo;
myProcess.Start();
StreamReader myStreamReader = myProcess.StandardOutput;
// Read the standard output of the spawned process.
string myString = myStreamReader.ReadLine();
Console.WriteLine(myString);
myProcess.WaitForExit();
myProcess.Close();
如果我使用的不是 myStreamReader.ReadLine(),而是 myStreamReader.ReadToEnd(),我是否仍应使用 myProcess.WaitForExit()?还是 ReadToEnd() 会等到进程结束?
最佳答案
编辑:很抱歉打扰,直接回答你的问题。是的,您需要调用 Process.WaitForExit();
。这将确保在您调用 ReadToEnd()
ReadToEnd 是同步函数。因此,如果您不在代码中调用它,它将阻塞您的主线程,直到它从 StandardOutput 捕获仅第一个输出,然后就这样了。但是使用 WaitForExit 将确保您拥有一切。
您也可以考虑对进程的输出进行异步读取,请参阅 MSDN Example实现 OutputDataRecieved
关于c# - ReadToEnd 来自进程的标准输出和 waitforexit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12358091/
我有一个方法 private static String DecompressAndDecode(byte[] data) { GZipStream decompressor = new GZi
我正在尝试使用 AES 解密 C# 中的字符串: public static string AesDecrypt(byte[] cipherText, byte[] Key, byte[] IV) {
StreamReader.ReadToEnd()使用什么字符编码? 在下面使用(b)而不是(a)的原因是什么? 如果使用(a),是否存在字符编码问题的风险 而不是(b)? 是否有另一种方法优于(a)和
来自 MSDN 使用新创建进程的 stdoutput 的例子: // This is the code for the base process Process myProcess =
我知道之前在 Stackoverflow 上有人问过这个问题,但找不到解释。 当我尝试从压缩字节数组中读取字符串时,我在第一次尝试时得到了一个空字符串,在第二次我成功并获得了字符串。 代码示例: pu
这个问题在这里已经有了答案: ProcessStartInfo hanging on "WaitForExit"? Why? (22 个答案) 关闭 5 年前。 我有一个经常使用外部程序并读取其输出
在通用 Windows 平台 (UWP) 应用程序中,我尝试使用套接字将对象发送到 Windows 窗体程序: public void CreateListener() { T
如果我有以下代码: namespace foo { public class FooClass { public static void Main (string[] argsRaw) {
我试图理解为什么当我调用上述函数时,我在读取的输出中每第 80 列得到十六进制 0D0A。 我有一个 powershell 脚本,为了简洁起见,其中有两行用于测试: $xmlSpew = "Defau
我正在启动一个控制台应用程序,但是当我重定向标准输出时,我总是什么也得不到! 当我不重定向它,并将 CreateNoWindow 设置为 false 时,我在控制台中正确地看到了所有内容,但是当我重定
我正在编写一个采用 2 个参数的 C# 控制台应用程序:myprogram.exe param1 param2 param2 是可选的,如果它不存在,则获取管道数据: echo "hithere" |
我read这部分代码可能会导致死锁: Process p = new Process(); p.StartInfo.UseShellExecute = false; p.StartInfo.Re
在这样的构造中调用 ReadToEnd 方法后是否有可能以某种方式关闭 StreamReader: string s = new StreamReader("filename", Encoding.U
有没有办法知道在调用 TextReader.Read 或 TextReader.ReadToEnd 调用之前会挂起而不抛出异常? try { using (var filterReader = ne
我正在尝试序列化 Person 类的一个实例: using System; using System.IO; using System.Runtime.Serialization; using Sys
我有连接超过 500MB 的文本文件的请求。 给我的遗留代码使用 TextReader.ReadToEnd() 和下面的代码: using (TextWriter textWriter = new S
try { string filename = "E:\\sox-14-4-0\\mysamplevoice.wav"; Process p = new Process
与以下内容等效的 Java 是什么 // C# using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) {
我们正在读取来自 HttpWebResponse 的响应,我们认为响应本身非常正常。但是当我们尝试读取它的字符串表示形式时,我们只会收到奇怪的字符,而不是 json 格式的普通字符。谁能告诉我们这里出
是否有任何简单的方法可以使用 C++ STL iostream 将小型文本文件中的所有文本读取到 std::string 中? 我试过类似的东西 ifstream f("file.txt"); str
我是一名优秀的程序员,十分优秀!