首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我怎么知道最后一次OutputDataReceived何时到达?

在开发过程中,我们可能会遇到需要处理程序输出的情况。在C#中,可以使用Process类来启动外部程序并获取其输出。OutputDataReceived事件可以帮助我们在接收到输出数据时做出响应。

要了解何时到达OutputDataReceived事件,可以使用以下方法:

  1. 使用Process类的OutputDataReceived事件。
  2. 在事件处理程序中,记录事件发生的时间。
  3. 当程序结束时,检查记录的时间,以确定何时到达了OutputDataReceived事件。

以下是一个简单的示例:

代码语言:csharp
复制
using System;
using System.Diagnostics;

namespace OutputDataReceivedExample
{
    class Program
    {
        static void Main(string[] args)
        {
            Process process = new Process();
            process.StartInfo.FileName = "your_command_here";
            process.StartInfo.Arguments = "your_arguments_here";
            process.StartInfo.UseShellExecute = false;
            process.StartInfo.RedirectStandardOutput = true;
            process.OutputDataReceived += (sender, eventArgs) =>
            {
                Console.WriteLine($"Output: {eventArgs.Data}");
            };

            process.Start();
            process.BeginOutputReadLine();
            process.WaitForExit();

            Console.WriteLine($"OutputDataReceived event occurred at: {process.ExitTime}");
        }
    }
}

在这个示例中,我们创建了一个Process对象,并设置了要运行的命令和参数。我们还设置了RedirectStandardOutputtrue,以便将输出重定向到我们的程序。然后,我们添加了一个事件处理程序,用于处理OutputDataReceived事件。最后,我们启动了进程,并使用BeginOutputReadLine方法开始读取输出。

当程序结束时,我们可以检查process.ExitTime属性,以确定OutputDataReceived事件发生的时间。

请注意,这个示例仅适用于C#。如果您使用的是其他编程语言,则可能需要使用其他方法来处理输出数据。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 执行Cmd命令[通俗易懂]

    EventManager.WriteOutput(“正在前端构建…”); var dir = Path.Combine(InputInfo.BranchPath, ConfigInfo.Instance.RootWebDir, “node”); var root = Path.GetPathRoot(dir).Substring(0, 2); StringBuilder sb = new StringBuilder(); Process 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 = true; p.OutputDataReceived += (sender, a) => sb.AppendLine(a.Data); p.Start(); p.StandardInput.WriteLine(root); p.StandardInput.WriteLine($”cd {dir}”); p.StandardInput.WriteLine(@”grunt.cmd” + “&exit”); p.BeginOutputReadLine(); p.WaitForExit(); string output = sb.ToString(); p.Close(); if (output.IndexOf(“error”, StringComparison.OrdinalIgnoreCase) != -1) { EventManager.WriteOutput(output); EventManager.WriteOutput(“前端构建失败”); return false; } EventManager.WriteOutput(“前端构建完成”); return true;

    03

    【Java数据结构】二叉树详解(一)

    结点的度:一个结点含有子树的个数称为该结点的度; 如上图:A的度为6 树的度:一棵树中,所有结点度的最大值称为树的度; 如上图:树的度为6 叶子结点或终端结点:度为0的结点称为叶结点; 如上图:B、C、H、I...等节点为叶结点 双亲结点或父结点:若一个结点含有子结点,则这个结点称为其子结点的父结点; 如上图:A是B的父结点 孩子结点或子结点:一个结点含有的子树的根结点称为该结点的子结点; 如上图:B是A的孩子结点 根结点:一棵树中,没有双亲结点的结点;如上图:A 结点的层次:从根开始定义起,根为第1层,根的子结点为第2层,以此类推 树的高度或深度:树中结点的最大层次; 如上图:树的高度为4 树的如下概念只需了解,我们只要知道是什么意思即可: 非终端结点或分支结点:度不为0的结点; 如上图:D、E、F、G...等节点为分支结点 兄弟结点:具有相同父结点的结点互称为兄弟结点; 如上图:B、C是兄弟结点 堂兄弟结点:双亲在同一层的结点互为堂兄弟;如上图:H、I互为堂兄弟结点 结点的祖先:从根到该结点所经分支上的所有结点;如上图:A是所有结点的祖先 子孙:以某结点为根的子树中任一结点都称为该结点的子孙。如上图:所有结点都是A的子孙 森林:由m(m>=0)棵互不相交的树组成的集合称为森林

    01
    领券