foreach (System.Diagnostics.Process thisproc in System.Diagnostics.Process.GetProcessesByName(fileName[i-1]))
{
/*for(;;)
{
;
}*/
if (!thisproc.CloseMainWindow())
{
thisproc.Kill();
}
i = i --;
}
i是打开多个进程时的自增值,是全局变量。
上面代码执行的操作:关闭打开的多个文件的进程。执行后,没反应;
于是单步执行,到foreach时,只进行了foreach()内的操作后,就直接跳过循环了。
开始以为是if语句不满足,后来加入红字部分,发现根本不执行!求高手给我解答,谢谢!
{
/*for(;;)
{
;
}*/
if (!thisproc.CloseMainWindow())
{
thisproc.Kill();
}
i = i --;
}
i是打开多个进程时的自增值,是全局变量。
上面代码执行的操作:关闭打开的多个文件的进程。执行后,没反应;
于是单步执行,到foreach时,只进行了foreach()内的操作后,就直接跳过循环了。
开始以为是if语句不满足,后来加入红字部分,发现根本不执行!求高手给我解答,谢谢!
foreach (Process thisproc in Process.GetProcessesByName(processName)) {
if(!thisproc.CloseMainWindow()){
thisproc.Kill();
}}
foreach中修改不了集合
for从大到小操作
foreach (System.Diagnostics.Process thisproc in System.Diagnostics.Process.GetProcessesByName(fileName[0]))
{
if (!thisproc.CloseMainWindow())
{
thisproc.Kill();
}
// i = i -1;
}
for (; i>=0; --i)
{
System.Diagnostics.Process[] thisproc = System.Diagnostics.Process.GetProcessesByName(fileName[i]);
if (!thisproc[i].CloseMainWindow())
{
thisproc[i].Close();
}
}
错误提示:if (!thisproc[i].CloseMainWindow())数组越界
因为最后一次多自增1,所以现在用--i;如果打开3个文件i就是3(fileName[]下表是0、 1、 2)
不应该把整个thisproc都关掉么
i=3
System.Diagnostics.Process[] thisproc = System.Diagnostics.Process.GetProcessesByName(fileName[i]);
假设得到的thisproc只有一个进程,然后去thisproc[i].Close();很明显数组就越界了.
我昨天貌似也回过lz的问题,推荐lz还是不要把循环计数定义成全局了.
还有,我执行代码的时候,thisproc[i].Close()里面的i值是0,也就是按你说的第一个进程,怎么还是出现越界?
还有就算有值的话也不该用thisproc[i]进行操作吧.
// 参数:
// processName:
// 该进程的友好名称。
明显打一个文件名进去是不会出来东西的,需要输一个进程名进去.
但是thisproc的值仍然是一个null,我的进程里面有QQ.exe
不知道是不是GetProcessByName我用的不对。我想知道怎样通过文件名去获得关闭该文件的方法。
foreach里面的枚举是不可以更改的
System.Diagnostics.Process.GetProcessesByName("QQ");再试试看
善用msdn和f1
把返回的process放到一个list中,操作起来就没有这么麻烦了吧.