C# .net进程:如何;“监测”;处理输出并使应用程序事件响应

C# .net进程:如何;“监测”;处理输出并使应用程序事件响应,c#,.net,C#,.net,我正在尝试使用C#和mencoder开发一个视频转换器。 目前它是可行的,但我有一些问题要解决。特别是 是否可以在执行过程中“不阻止”我的前端应用程序?实际上,我的应用程序停止响应事件,直到调用过程结束 在Process.net类中存在一些事件来管理我的应用程序的标准输出,因此我可以使用输出更新例如文本框 谢谢,我找到了 p.OutputDataReceived += new DataReceivedEventHandler(MEncoderOutputHandler); 我找到了 p.Out

我正在尝试使用C#和mencoder开发一个视频转换器。 目前它是可行的,但我有一些问题要解决。特别是

  • 是否可以在执行过程中“不阻止”我的前端应用程序?实际上,我的应用程序停止响应事件,直到调用过程结束

  • 在Process.net类中存在一些事件来管理我的应用程序的标准输出,因此我可以使用输出更新例如文本框

  • 谢谢,我找到了

    p.OutputDataReceived += new DataReceivedEventHandler(MEncoderOutputHandler);
    
    我找到了

    p.OutputDataReceived += new DataReceivedEventHandler(MEncoderOutputHandler);
    

    使用
    Application.DoEvents()
    另外,如果您调用的函数阻塞了代码并且需要很长时间才能响应,则不应该从UI线程调用它。只需创建一个新线程,调用函数并与UI交互即可。
    还请注意,从另一个线程访问UI会引发异常,因此您应该使用委托或使用
    backgroundworker
    控件来处理这些异常。

    使用
    应用程序.DoEvents()
    另外,如果您调用的函数阻塞了代码并且需要很长时间才能响应,则不应该从UI线程调用它。只需创建一个新线程,调用函数并与UI交互即可。
    还请注意,从另一个线程访问UI会引发异常,因此您应该使用委托或使用
    backgroundworker
    控件来处理这些异常。

    应用程序.DoEvents
    通常是一个错误的选择,应该仅用作解决方法。当输出可用时获取事件或异步读取输出流的能力都更好。
    Application.DoEvents
    通常是一个不好的选择,应该仅用作解决方法。当输出可用时获取事件或异步读取输出流的能力都更好。