主要代码如下:
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
Process[] myProcesses;
myProcesses = Process.GetProcessesByName("Outlook");
foreach (Process instance in myProcesses)
{
instance.WaitForExit(1000);
instance.CloseMainWindow();
}
}
按代码的意思,我打开了多少个outlook就该关掉多少个,可实际上它每次只关闭一个就结束了,可看代码没问题,请帮忙看一下问题出在哪?
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
Process[] myProcesses;
myProcesses = Process.GetProcessesByName("Outlook");
foreach (Process instance in myProcesses)
{
instance.WaitForExit(1000);
instance.CloseMainWindow();
}
}
按代码的意思,我打开了多少个outlook就该关掉多少个,可实际上它每次只关闭一个就结束了,可看代码没问题,请帮忙看一下问题出在哪?
Process[] myProcesses = Process.GetProcessesByName("Outlook");
for( int i = 0; i < myProcesses.Count; i++ )
{
Process instance = myProcesses[i];
instance.WaitForExit(1000);
instance.CloseMainWindow();
}
}
从而造成foreach循环操作不对。
{
//
// TODO: 在此处添加代码以启动应用程序
//
Process[] myProcesses;
foreach (Process instance in myProcesses)
{
myProcesses = Process.GetProcessesByName("Outlook");
instance.WaitForExit(1000);
instance.CloseMainWindow();
}
}
你这边使用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);
}
}
myProcesses = Process.GetProcessesByName("Outlook");
foreach (Process instance in myProcesses)
{
instance.Kill();
}