process . start()返回ID,但是进程没有到达Main方法

本文关键字:进程 方法 Main start 返回 ID process | 更新日期: 2023-09-27 18:07:45

我遇到了Process.Start()的问题-它正在返回一个进程PID,这表明进程已经正确启动,但我无法在进程中看到它,没有日志也没有从Main方法记录错误。启动进程的代码:

public static int StartBackgroundProcess(string fileName, string arguments)
{
    int processId = INVALID_PROCESS_ID;
    try
    {
        using (Process p = new Process())
        {
            p.StartInfo.FileName = fileName;
            p.StartInfo.Arguments = arguments;
            p.StartInfo.UseShellExecute = false;
            p.Start();
            processId = p.Id;
        }
    }
    catch (Exception ex) 
    {
        Logger.Error(ex);
    }
    return processId;
}

注意:我有退出代码:

2016-09-19 17:44:15 [23] DEBUG进程退出代码:-1073741502

process . start()返回ID,但是进程没有到达Main方法

尝试将文件名更改为您100%有效的文件名。例如"C:'Windows'System32'mspaint.exe"。

如果这个开始,你应该检查你的其他文件。

public static int StartBackgroundProcess(string fileName, string arguments)
        {
            int processId = INVALID_PROCESS_ID;
            try
            {
                using (Process p = new Process())
                {
                    p.StartInfo.FileName = C:'Windows'System32'mspaint.exe";
                    p.StartInfo.Arguments = "";
                    p.StartInfo.UseShellExecute = false;
                    p.Start();
                    processId = p.Id;
                }
            }
            catch (Exception ex) 
            {
                Logger.Error(ex);
            }
            return processId;
        }

我可以看到你有你的进程实例在一个使用块,所以它是处置在调用Start之后。根据文档,处置过程释放"该过程使用的所有资源"。我的猜测是,它停止了进程,但它没有。

https://msdn.microsoft.com/en-us/library/4zfy9z3c (v = vs.110) . aspx