Я работаю над проектом Kinect. Я записываю данные из полученных кадров. Когда мне приходится обрабатывать данные кадра, программа отнимает много времени. Тем временем я хочу отключить EventHandler MultiSourceFrameArrived.
Дело в том, что я читаю разные посты, я не могу найти ответ, который соответствует моей проблеме. Выражение -=
, кажется, работает, только если оно находится в той же области видимости, что и выражение +=
. Когда я пишу их в разных областях, фреймы все еще прибывают, и я не могу отключить этот обработчик событий.
НЕ РАБОЧИЙ код это:
private void MainWindow()
{
//Intitalize components
if (this.multiSourceFrameReader != null)
{
EnableFrameArrived();
}
}
private void MultiSourceFrameReader_MultiSourceFrameArrived(object sender, MultiSourceFrameArrivedEventArgs e)
{
DisableFrameArrived();
}
private void DisableFrameArrived()
{
this.multiSourceFrameReader.MultiSourceFrameArrived -= this.MultiSourceFrameReader_MultiSourceFrameArrived;
//This doesn`t cancel my suscription to the event.
}
private void EnableFrameArrived()
{
this.multiSourceFrameReader.MultiSourceFrameArrived += MultiSourceFrameReader_MultiSourceFrameArrived;
}
РАБОЧИЙ код это:
private void MainWindow()
{
//Intitalize components
if (this.multiSourceFrameReader != null)
{
this.multiSourceFrameReader.MultiSourceFrameArrived += this.MultiSourceFrameReader_MultiSourceFrameArrived;
//I subscribe to the event
}
this.multiSourceFrameReader.MultiSourceFrameArrived -= this.MultiSourceFrameReader_MultiSourceFrameArrived;
//I cancel my subscription. But I need to cancel my subscription in another scope.
}
Я прокомментировал остальную часть кода и просто оставил это часть работает. Я продолжаю получать фреймы поступлений, даже если метод Disable достигнут. Почему отмена моего мероприятия возможна только в том случае, если я в той же сфере? Я читаю разные блоги, но не могу решить это.
Есть предложения? Спасибо!