C# 如何关闭事件处理程序?

C# 如何关闭事件处理程序?,c#,wpf,event-handling,C#,Wpf,Event Handling,我确实有以下情况(WPF;C#): 1) 我初始化了一个摄像头并启动了一个事件处理程序,它会在后台自动显示实时图像 2) 之后,如果用户单击一个按钮,我想再次关闭这个打开的事件处理程序。 问题:我怎么做 我的代码: private void InitCamera(int CamID) { ... Camera.EventFrame += onFrameEventFocusCam; // start event ... } private void onFram

我确实有以下情况(WPF;C#):

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();
    }
...
}
您是否尝试过:

Camera.EventFrame -= onFrameEventFocusCam;

它不起作用,我收到以下错误消息:“线程从等待状态中断”,带“Dispatcher.Invoke”的代码行高亮显示。您可以尝试检查Dispatcher.hashutdownstart是否在Dispatcher.Invoke之前启动。。。。行,但这只是一个猜测我这样更改了代码:在“Camera.EventFrame-=onFrameEventFocusCam”行之后,我检查了“Dispatcher.hashutdownstarted”是否在while循环中启动,但没有启动。