簡體   English   中英

為什么Process.OutputDataReceived在ASP.NET中不起作用,如何解決?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM