2014-07-18 20 views
1

我有以下情况(WPF; C#):如何关闭事件处理程序?

1)I初始化照相机和启动事件处理程序在后台

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(); 
    } 
... 
} 

回答

2

你尝试:

Camera.EventFrame -= onFrameEventFocusCam; 
+0

它没有工作,我得到以下错误信息:与代码行以“主题,从一个等待状态中断”“ Dispatcher.Invoke“突出显示。 – Norick

+0

您可以尝试检查Dispatcher.HasShutdownStarted是否在Dispatcher.Invoke ....行之前,但它只是一个猜测 – CloudyMarble

+0

我以这种方式更改了代码: 行后面的“Camera.EventFrame - = onFrameEventFocusCam;”我检查了“Dispatcher.HasShutdownStarted”是否在while循环中启动,但未启动。 – Norick

相关问题