Функция «без фигурных скобок» является указателем на некоторую функцию.
Вот пример.
let bananas = function(){ console.log('bananas') }
Когда вы делаете это, вы не вызываете функцию, а только ссылаетесь на нее, только создаете указатель на функцию. С этой ссылкой вы можете звонить bananas()
в любое время, а не только когда код читается.
Причина, по которой вы передаете только ссылку на функцию в реакции, заключается в том, что внутри компонента, где он будет вызывать функцию.
Если вы просто сделаете это <input type="text" onChange={this.name()} />
, во время рендеринга ввода вызывается name()
, но если вы передаете только ссылку на функцию, реакция будет вызывать функцию только тогда, когда событие (onChange) случается.
Я не знаю, насколько это может быть эффективным, вы можете использовать ManagementEventWatcher для просмотра запрос.
Вот что я нашел в сети.
WqlEventQuery wQuery =
new WqlEventQuery("Select * From __InstanceDeletionEvent Within 1 Where TargetInstance ISA 'Win32_Process'");
using (ManagementEventWatcher wWatcher = new ManagementEventWatcher(scope, wQuery))
{
bool stopped = false;
while (stopped == false)
{
using (ManagementBaseObject MBOobj = wWatcher.WaitForNextEvent())
{
if (((ManagementBaseObject)MBOobj["TargetInstance"])["ProcessID"].ToString() == ProcID)
{
// the process has stopped
stopped = true;
}
}
}
wWatcher.Stop();
}
Если процесс на удаленной машине является вашим кодом, вы можете открыть сокет на вызывающей машине и позволить удаленная машина «пингует» ее по завершении.
Если вы хотите использовать этот метод для любого удаленного процесса, у вас может быть вспомогательное приложение / служба на удаленном компьютере, который отслеживает ваш процесс и возвращает завершенный пинг.
Родным способом Win32 для достижения этой цели было бы выполнение WaitForSingleObject ()
для процесса дескриптор, возвращенный CreateProcess ()
, однако я не думаю, что этот дескриптор доступен вам из WMI.
В этой статье предлагается еще один вариант, который вы могли бы рассмотреть - вместо того, чтобы опрашивать список процессов и ждать, пока ваш процесс исчезнет, он неоднократно запрашивает события удаления процессов, соответствующие вашему идентификатору процесса:
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process")
objWMIService.Create "notepad.exe", null, null, intProcessID
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colMonitoredProcesses = objWMIService.ExecNotificationQuery _
("Select * From __InstanceDeletionEvent Within 1 Where TargetInstance ISA 'Win32_Process'")
Do Until i = 1
Set objLatestProcess = colMonitoredProcesses.NextEvent
If objLatestProcess.TargetInstance.ProcessID = intProcessID Then
i = 1
End If
Loop
Вы также можете улучшить это с помощью объекта ManagementEventWatcher
и его метода WaitForNextEvent
, чтобы избежать необходимости опроса событий удаления.