C#获取EventHandler进程信息

C#获取EventHandler进程信息,c#,eventhandler,C#,Eventhandler,我启动了几个进程,我想知道哪个进程称为OutputhHandler,但我无法获得有关发送进程的任何信息。 当我尝试读取属性时,它总是抛出InvalidOperationException void ExecString() { using (Process process = new Process()) { process.StartInfo.FileName = executeExe; process.StartInfo.Arguments =

我启动了几个进程,我想知道哪个进程称为OutputhHandler,但我无法获得有关发送进程的任何信息。 当我尝试读取属性时,它总是抛出InvalidOperationException

void ExecString()
{
    using (Process process = new Process())
    {
        process.StartInfo.FileName = executeExe;
        process.StartInfo.Arguments = string.Format("{0}/{1}@{2} @{3}", parameter0, parameter1, parameter2, parameter3);
        process.StartInfo.UseShellExecute = false;
        process.StartInfo.RedirectStandardOutput = true;
        process.StartInfo.RedirectStandardError = true;
        process.StartInfo.CreateNoWindow = true;

        process.EnableRaisingEvents = true;
        process.OutputDataReceived += OutputHandler;

        process.Start();
        process.BeginOutputReadLine();
    }
}   

void OutputHandler(object sendingProcess, DataReceivedEventArgs output)
{
    try
    {
        OutputText = output.Data;
        var tmpProcess = (Process)sendingProcess;
        var testId = tmpProcess.Id; // Throw Exception
    }
    catch (InvalidOperationException e)
    {
        OutputText = e.Message;
    }
}

你能试试这个吗,它可能对你有帮助

Process currentProcess = Process.GetCurrentProcess(); 
var pid = currentProcess.Id; 

检查文档中的属性。这是一个记录在案的异常,如果没有ID就会抛出,原因可能是它尚未设置,也可能是因为没有流程。也许路径是错误的,或者参数导致了错误?在进程启动后,我获得了一个进程id,在输出处理程序中,我获得了预期的数据。只有sendingProcess对象没有预期的信息。请将所需的参数添加到OutputHandler方法中,如Processs prc。和一个lambda表达式来订阅事件,以便可以传递流程变量。using语句必须停止,流程对象需要保持活动状态,直到终止。Process currentProcess=Process.GetCurrentProcess();字符串pid=Process.Id.ToString();请您尝试一下并回答我。@user2369332I删除了using语句,现在我可以从eventhandler访问进程信息。谢谢大家。