Строка ошибки «Ссылка на объект, не установленная на экземпляр объекта.» указывает, что вы не назначили экземпляр объекта объектной ссылке, и все же вы получаете доступ к свойствам / методам этого объекта.
например: скажем, у вас есть класс под названием myClass и он содержит одно свойство prop1.
public Class myClass
{
public int prop1 {get;set;}
}
Теперь вы получаете доступ к этому prop1 в каком-то другом классе, как показано ниже:
public class Demo
{
public void testMethod()
{
myClass ref = null;
ref.prop1 = 1; //This line throws error
}
}
выше строки выдает ошибку, потому что ссылка класса myClass объявлена, но не создана, или экземпляр объекта не назначается referecne этого класса.
Чтобы исправить это, вам нужно создать экземпляр (присвоить объект ссылке на этот класс).
public class Demo
{
public void testMethod()
{
myClass ref = null;
ref = new myClass();
ref.prop1 = 1;
}
}
Вы можете проверить срок службы, используя
bool isProcessRunning(HANDLE process)
{
return WaitForSingleObject( process, 0 ) == WAIT_TIMEOUT;
}
http://msdn.microsoft.com/en-us/library/ms683189%28VS.85%29.aspx
Возвращаемое значение
Если функция завершается успешно, возвращаемое значение отличное от нуля.
Если функция не работает, возвращаемое значение равно нулю. Чтобы получить расширенную информацию об ошибке, вызовите GetLastError .
blockquote>
Вы можете использовать EnumProcesses()
, чтобы все процессы выполнялись в Windows. Что-то вроде:
bool IsProcessRunning(int pid)
{
unsigned long processes[2048];
unsigned long num_proc = 0;
unsigned long needed = 0;
// assume that 2048 processes are enought
if (EnumProcesses(processes, sizeof(processes), &needed))
num_proc = needed / sizeof(DWORD);
for (int i = 0; i < num_proc; i++)
if (processes[i] == pid)
return true;
return false;
}