2014-07-18 222 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

相關問題