[英]Why Process.OutputDataReceived isn't working in ASP.NET and how can I fix it?
以下代碼在普通控制台應用程序中運行良好:
private void button1_Click(object sender, EventArgs e)
{
Process process = new Process();
process.StartInfo.FileName = @"a.exe";
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.UseShellExecute = false;
process.OutputDataReceived += new DataReceivedEventHandler(process_OutputDataReceived);
process.Start();
process.BeginOutputReadLine();
}
void process_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
this.Invoke(new Action(delegate() { textBox2.Text += "\r\n" + e.Data; }));
}
但在Web應用程序中,它將啟動“ a.exe”,但不會輸出到文本框。 我該如何解決? 謝謝。
您需要記住Web應用程序和控制台/ WinForms應用程序之間的區別。 您必須將頁面返回給客戶端。 現在,您說的是“當進程寫出一行時告訴我”,然后立即返回頁面...在進程寫完任何內容時,網頁將已經呈現。
您可能想要等待進程退出,或者至少等待幾秒鍾。 請記住,用戶在等待頁面返回時不會看到任何東西。
您可以使用Comet之類的技術來做類似事件的事情,但這非常復雜。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.