Решено - C# получить информацию о процессе EventHandler

Я запускаю несколько процессов и хочу узнать, какой процесс называется OutputHandler, но я не могу получить никакой информации о процессе отправки. Когда я пытаюсь прочитать свойство, оно всегда выдает 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;
    }
}

1 ответ

Можете ли вы попробовать это, это может помочь вам;

Process currentProcess = Process.GetCurrentProcess(); 
var pid = currentProcess.Id; 
Другие вопросы по тегам