第一步:
CancellationTokenSource cts = new CancellationTokenSource()
第二步:
Task task = new Task(action, cts.Token);
第三步:
cts.Cancel();
using HalconDotNet;
using Major.Sqlite.Models;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using 工业视觉检测系统.Cameras;
using 工业视觉检测系统.ViewModels;
namespace 工业视觉检测系统.Views
{/// <summary>/// CameraDebugView.xaml 的交互逻辑/// </summary>
public partial class CameraDebugView : Window
{
CancellationTokenSource cts = new CancellationTokenSource();
Camera Camera { get; set;}
public CameraDebugView(Camera entity){InitializeComponent();
Camera = entity;}
private voidCheckedFunc(object sender, RoutedEventArgs e){
RadioButton radioButton =(sender as RadioButton);if(radioButton != null && radioButton.Content != null){//txtb.Text = radioButton.Content.ToString();}}
private voidSoftTrigger_Click(object sender, RoutedEventArgs e){// 取图
CameraManager.Instance.SnapImage(Camera.CameraName);
CameraManager cameraManager = CameraManager.Instance;
List<WaitHandle> waitHandles = new List<WaitHandle>(){ cameraManager.Dict_AutoResetEvent[Camera.CameraName]};
Action action =()=>{while(true){// 等待生产者生产物品
bool bTimeOut = WaitHandle.WaitAll(waitHandles.ToArray(),2000);if(!bTimeOut)continue;
window_CameraShow.HalconWindow.ClearWindow();
HImage hImage = new HImage();
cameraManager.Dict_CamImageList[Camera.CameraName].TryDequeue(out hImage);// 显示图像
window_CameraShow.HalconWindow.DispObj(hImage);}};
Task task = new Task(action, cts.Token);
task.Start();}/// <summary>/// 终止线程/// </summary>/// <param name="sender"></param>/// <param name="e"></param>
private voidWindow_Closed(object sender, EventArgs e){
cts.Cancel();}
private voidContinueGrap_Click(object sender, RoutedEventArgs e){}}}