主要代码如下:
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
Process[] myProcesses;
myProcesses = Process.GetProcessesByName("Outlook");
foreach (Process instance in myProcesses)
{
instance.WaitForExit(1000);
instance.CloseMainWindow();
}
}
按代码的意思,我打开了多少个outlook就该关掉多少个,可实际上它每次只关闭一个就结束了,可看代码没问题,请帮忙看一下问题出在哪?

解决方案 »

  1.   

    Sample code as follows:
    Process[] myProcesses = Process.GetProcessesByName("Outlook");
    for( int i = 0; i < myProcesses.Count; i++ )
    {
    Process instance = myProcesses[i];
    instance.WaitForExit(1000);
    instance.CloseMainWindow();
    }
    }
      

  2.   

    你代码的问题是在foreach中破坏了collection这个集合。
    从而造成foreach循环操作不对。
      

  3.   

    static void Main(string[] args)
    {
    //
    // TODO: 在此处添加代码以启动应用程序
    //
    Process[] myProcesses;

    foreach (Process instance in myProcesses)
    {
                                         myProcesses = Process.GetProcessesByName("Outlook");
    instance.WaitForExit(1000);
    instance.CloseMainWindow();
    }
    }
      

  4.   

    程序逻辑不对。
    你这边使用foreach,程序会从头到尾的遍历所有的进程。但之执行了一次啊,遍历完后程序就结束了,你再打开的outlook自然无法关闭了。
    建议:
    foreach外面应该再假个while(true)static void Main(string[] args)
    {
    //
    // TODO: 在此处添加代码以启动应用程序
    //
    Process[] myProcesses;
    myProcesses = Process.GetProcessesByName("Outlook");
                               while(true)
                               {
         foreach (Process instance in myProcesses)
         {
    instance.WaitForExit(1000);
    instance.CloseMainWindow();
         }
                                     System.Threading.Thread.Sleep(1000);
                               }
    }
      

  5.   

    Process[] myProcesses;
    myProcesses = Process.GetProcessesByName("Outlook");
    foreach (Process instance in myProcesses)
    {
                                    instance.Kill();
    }
      

  6.   

    我没有试但感觉Knight94(愚翁)说的有道理,谢谢大家,分不多,见谅了!