C# 流程。模块仅在流程开始后工作

C# 流程。模块仅在流程开始后工作,c#,visual-studio-2010,process,module,C#,Visual Studio 2010,Process,Module,我想显示加载到指定进程中的所有模块。我使用了这个代码,它可以工作: Process myProcess = new Process(); myProcess.StartInfo.FileName = ""; myProcess.StartInfo.WorkingDirectory = ""; myProcess.Start(); ProcessModule myProcessModule; ProcessModule

我想显示加载到指定进程中的所有模块。我使用了这个代码,它可以工作:

Process myProcess = new Process();
        myProcess.StartInfo.FileName = "";
        myProcess.StartInfo.WorkingDirectory = "";
        myProcess.Start();
        ProcessModule myProcessModule;
        ProcessModuleCollection myProcessModuleCollection = myProcess.Modules;
        for (int i = 0; i < myProcessModuleCollection.Count; i++)
        {
            myProcessModule = myProcessModuleCollection[i];
            MessageBox.Show(myProcessModule.ModuleName);
        }

我在互联网上搜索答案,尝试了我能想到的一切,但都不起作用。我还搜索了我得到的错误,发现程序可能认为myProcess.Modules为空,但这对我也没有帮助。
myProcess
按钮1中单击
是一个局部变量。
类中的字段仍然是
null


您需要删除变量声明。

嗯,您可能会觉得它很愚蠢,但无论如何。你的意思是我必须使myProcess成为一个全局变量吗?因为我已经在代码中这样做了。如果你是指别的,你能告诉我什么吗?谢谢。您有一个“全局”变量(实际上是类中的一个字段),但您从未使用过它。您正在第一个函数中生成一个局部变量。别那么做。谢谢你,我终于明白了。看来我还是不懂C的一些基本知识:D
public Process myProcess;

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Process myProcess = new Process();
        myProcess.StartInfo.FileName = "";
        myProcess.StartInfo.WorkingDirectory = "";
        myProcess.Start();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        ProcessModule myProcessModule;
        ProcessModuleCollection myProcessModuleCollection = myProcess.Modules;
        for (int i = 0; i < myProcessModuleCollection.Count; i++)
        {
            myProcessModule = myProcessModuleCollection[i];
            MessageBox.Show(myProcessModule.ModuleName);
        }
    }
ProcessModuleCollection myProcessModuleCollection = myProcess.Modules;