【发布时间】:2015-09-18 10:52:07
【问题描述】:
我对 C# 和 Windows 窗体编程非常陌生。 我正在尝试构建一个非常非常简单的表单。 我只有一个按钮和一个文本框,当我单击按钮时,会在后台启动一个进程(这是我用 Python 编程并编译为 EXE 文件的进程),这是一个非常简单的过程......只需打印从 1 到4 在每个数字之间有 2 秒的延迟 我希望输出实时显示在文本框中,这意味着 2 秒延迟后的数字 1 到 4。 我在网上搜索并搜索了很多,但找不到任何可以帮助我的东西。 我读了这个帖子-->How can I redirect process output (console) to richtextbox? 并试图实现那里写的没有运气 非常感谢! 这是我的代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private StringBuilder sortOutput;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
String output="";
using (Process sortProcess = new Process())
{
sortProcess.StartInfo.FileName = @"c:/req/dist/ex/ex.exe";
sortProcess.StartInfo.CreateNoWindow = true;
sortProcess.StartInfo.UseShellExecute = false;
sortProcess.StartInfo.RedirectStandardOutput = true;
sortProcess.Start();
output = sortProcess.StandardOutput.ReadLine();
// sortProcess.WaitForExit();
while (!(sortProcess.HasExited))
{
richTextBox1.AppendText(output.ToString());
Application.DoEvents(); // This keeps your form responsive by processing events
}
}
//richTextBox1.AppendText(sortOutput.ToString());
}
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
//?????
}
}
}
【问题讨论】:
-
你的 python exe 直接运行时在哪里打印数字。从命令提示符执行 python exe 时,你得到它的输出吗?
-
为什么您从示例代码中删除了
sortProcess.OutputDataReceived +=...和sortProcess.BeginOutputReadLine();?这对于解决方案至关重要。 -
@amit dayama:当我在控制台(cmd)中运行它时,我将 python 代码编译为 exe 文件,它打印 1...2...3..4,每个之间有 2 秒的延迟号码
-
@Ivan Stoev 我不太了解 c#,但我提到的线程中的代码肯定不能正常工作,所以我试着玩了一下.. 没有运气
-
下面我的呢?
标签: c#