C# 如何关闭事件处理程序?
我确实有以下情况(WPF;C#): 1) 我初始化了一个摄像头并启动了一个事件处理程序,它会在后台自动显示实时图像 2) 之后,如果用户单击一个按钮,我想再次关闭这个打开的事件处理程序。 问题:我怎么做 我的代码: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
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循环中启动,但没有启动。