Как закрыть обработчик событий?

1

У меня есть следующая ситуация (WPF; С#):

1) Я инициализирую камеру и запускаю обработчик событий, который автоматически отображает живое изображение в фоновом режиме

2) После этого я хотел бы снова закрыть этот открытый обработчик событий, если, например, пользователь нажимает кнопку. Вопрос: Как я могу это сделать?

Мой код:

private void InitCamera(int CamID)
{
    ...
    Camera.EventFrame += onFrameEventFocusCam;    // start event
    ...
}



private void onFrameEventFocusCam(object sender, EventArgs e)
{
 ...
    Dispatcher.Invoke(new Action(() =>
    {
        // Convert bitmap to WPF-Image
        var bmp = new Bitmap(bitmap);
        var hBitmap = bmp.GetHbitmap();

        System.Windows.Media.ImageSource wpfBitmap = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
        hBitmap, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());

        image_fokus.Source = wpfBitmap;
        image_fokus.Stretch = System.Windows.Media.Stretch.UniformToFill;


        DeleteObject(hBitmap);
        bitmap.Dispose();
    }
...
}
Теги:
wpf
event-handling

1 ответ

2

Ты пробовал:

Camera.EventFrame -= onFrameEventFocusCam;
  • 0
    Это не сработало, и я получаю следующее сообщение об ошибке: «Поток был прерван из состояния ожидания» и выделены строки кода с «Dispatcher.Invoke».
  • 0
    Вы можете проверить, находится ли Dispatcher.HasShutdownStarted перед строкой Dispatcher.Invoke ...., но это только предположение
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню