CS代码: 
    static Process p;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
            open();
    }
    void open()
    {
        p = new Process();
        p.StartInfo.FileName = "cmd.exe";
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.RedirectStandardInput = true;
        p.StartInfo.RedirectStandardOutput = true;
        p.StartInfo.RedirectStandardError = true;
        p.StartInfo.CreateNoWindow = false;
        p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);
        p.Start();
        p.BeginOutputReadLine();
    }    void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
    {
        TextBox1.Text += e.Data;
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        p.StandardInput.WriteLine("dir d:");
    }
Html代码:
<asp:TextBox ID="TextBox1" runat="server" Height="297px" TextMode="MultiLine" 
                Width="506px"></asp:TextBox>
       <br />
         <asp:Button ID="Button1" runat="server"  Text="Button" onclick="Button1_Click" />为什么我在Process进程事件void p_OutputDataReceived(object sender, DataReceivedEventArgs e)中的代码不起作用呢。好像都不会回发到客户端去。
请问这要怎么做呢。让void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
中的代码能对客户端起作用。

解决方案 »

  1.   

    你试一试把if (!IsPostBack) 注释掉
      

  2.   

    TO 二楼和三楼  if (!IsPostBack)注释了没用,
          还有我调试过了,事件中的代码有执行过,但是执行了控件没反应,我想应该是没有回发到客户端去。
      

  3.   

    要怎么写呢。好像在void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
    这事件里,所以东西都不会发到客户端去。
    你帮我写出来下行吗
      

  4.   

    哈哈,太搞笑了吧,这个是asp.net 不是winform程序,每一次都是新的request, 你在server端用并行怎么可能成功。
    你用ajax,然后再server端并行执行你的那个  void open() 函数。然后将结果返回给js, 然后更新,或者实现异步的handler,不然在一个web request 怎么可能做到不阻塞的并行执行。
      

  5.   

    web 是一种(客户端)请求,然后(服务端)应答的方式,看明白是“然后”。 void p_OutputDataReceived(object sender, DataReceivedEventArgs e) 
        { 
            TextBox1.Text += e.Data; 
        } 
    你这方法没客户端请求,能成功?
      

  6.   

    如果这样不行,那各位高手能不能给我个方法。让服务器主动向WEB发送信息呢。别笑我,我知道这样好像是不行的。有点矛盾。。能不能给我个解决方案呢,能实现就成
      

  7.   

    服务器可以主动发送消息到客户端,但前提是客户端web是RIA或着ActiceX等类似的客户端技术。一般情况下,是客户端定时到服务端“提取”消息.
      

  8.   

    我用Timer控件定时向服务端读取了,只能这样子了,谢谢大家了。