本方法是结束之前的线程,如果多次启动同一个线程则可以终止以前的线程,只执行最后一个
using System.Threading; #region 终止线程 Thread weight = new Thread(() => { }); // 初始化一个空的线程对象 private CancellationTokenSource cancellationTokenSource; // 创建一个取消令牌源对象 public void StopThread () { try { if (weight != null && weight.IsAlive) { cancellationTokenSource.Cancel(); // 取消之前的线程任务 if (!weight.Join(TimeSpan.FromSeconds(5))) { weight.Abort(); // 如果线程没有在规定时间内结束,强制终止线程 } } } catch (Exception) { // 异常处理代码 } cancellationTokenSource = new CancellationTokenSource(); // 创建一个新的取消令牌源对象 weight = new Thread((token) => { // 线程内的方法 }); weight.Start(cancellationTokenSource.Token); // 启动新线程,并传递取消令牌 } #endregion