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