1
當在單獨的* .dll文件中創建進程時,我很難將控制檯應用程序的輸出重定向到Windows窗體應用程序(請原諒這個sl termin的術語,但我是新的到編程)。我遇到了這個鏈接(我可能會追求他的方法),詳述一個類似的問題:http://www.codeproject.com/KB/threads/launchprocess.aspx?msg=3087118我可以從控制檯讀取一行,但如何讓它保持打開狀態?在單獨的類中處理標準錯誤
所以基本上我的問題是如何正確訪問從一個單獨的類內streamreader輸出?
下面的代碼在本地調用時工作得很好。
private void exampleErrorRedirection()
{
Process proc = new Process();
proc.StartInfo.FileName = /exampleconsoleapp.exe;
proc.StartInfo.Arguments = "some arguments that work";
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
if (!proc.Start())
{
Console.WriteLine("Error starting");
return;
}
StreamReader reader = proc.StandardError;
string line;
while ((line = reader.ReadLine()) != null)
{
textBoxForStandardError.Text = line;
}
proc.Close();
}
但是我希望能夠調用時從一個單獨的類重定向輸出。 Atm我只能從控制檯獲得第一行,並且不會更新。
private void exampleErrorRedirection()
{
exampleDLLFile.startProc ConsoleApp new exampleDLLFile.startProc();
ConsoleApp.Run();
while (convert.line != null)
{
textBoxForStandardError.Text = ConsoleApp.line;
}
}
所在班級設有類似的方法,以便:
public class convertFile
{
public string line;
public void Run()
{
Process proc = new Process();
proc.StartInfo.FileName = /exampleconsoleapp.exe;
proc.StartInfo.Arguments = "some arguments that work";
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
if (!proc.Start())
{
Console.WriteLine("Error starting");
}
StreamReader reader = proc.StandardError;
while ((line = reader.ReadLine()) != null)
{
line = reader.ReadLine();
}
proc.Close();
}
}
您能解釋的代碼更多 - 感謝提前。 –
我添加了一些代碼,顯示如何正確使用它。你能問一個更具體的問題嗎? – jason
我還不瞭解如何從課堂以外訪問e.Data。認真地nooby,但我掙扎:( –