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();
}
...
}
它沒有工作,我得到以下錯誤信息:與代碼行以「主題,從一個等待狀態中斷」「 Dispatcher.Invoke「突出顯示。 – Norick
您可以嘗試檢查Dispatcher.HasShutdownStarted是否在Dispatcher.Invoke ....行之前,但它只是一個猜測 – CloudyMarble
我以這種方式更改了代碼: 行後面的「Camera.EventFrame - = onFrameEventFocusCam;」我檢查了「Dispatcher.HasShutdownStarted」是否在while循環中啓動,但未啓動。 – Norick