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