美好的一天,
我是.NET
的新用户,我通过Wolfram Mathematica 使用NETLink
包访问.NET
。我需要定义一个.NET
函数,它返回具有给定ID的进程是否仍然存在的信息。
通过NETLink
定义.NET
功能的典型方法如下:
Needs["NETLink`"];
LoadNETType["System.Diagnostics.Process"];
killProc[procID_] := (
proc = Process`GetProcessById[procID];
proc@Kill[]
);
上面的代码定义了使用ID killProc[procID]
终止进程的函数procID
。如何定义一个只检查之前具有此ID <的进程是否仍然存在的函数?此过程的定义可能应该在过程仍然存在的时刻完成。在某个时刻,我只想检查它是否仍然存在。
答案 0 :(得分:2)
试试此代码段
Process myProcess = Process.GetProcessById( processId );
if( myProcess == null )
{
//does not exist
}
else
{
//process still exists
}
修改强>
我现在仔细检查,似乎我弄错了。如果找不到进程,Process.GetProcessById不返回null,而是给出Argument exception
。您应该使用此代码段:
public void ProcessExists( int myProcessId )
{
return Process.GetProcesses().Where( p => p.Id == myProcessId).Any());
}
答案 1 :(得分:2)
解决方案是使用属性HasExited
:
Needs["NETLink`"];
LoadNETType["System.Diagnostics.Process"];
proc = Process`GetProcessById[procID];
proc@HasExited
这是我搜索的内容。