WPF编程线程使用记录

WPF编程线程使用记录
对于线程

    Thread myReceiveCANthread;
        myReceiveCANthread = new Thread(F_mythreadReceiveCan);
        myReceiveCANthread.IsBackground = true;

可以设置线程myReceiveCANthread的IsBackground 为true,这样这个线程就是后台线程,当前台线程(主线程)关闭时,这个线程也同步自动销毁;

另外通过调用Abrot()方法也可以,停止某一线程,但是需要线程执行完毕后才能终止,也并不是立即终止,
故在某些情况下,建议可以设置 状态标志位去终止线程

1、如果对尚未启动的线程调用 Abort,则当调用 Start 时该线程将中止。如果对被阻止或正在休眠的线程调用 Abort,则该线程被中断然后中止。

2、如果在已挂起的线程上调用 Abort,则将在调用 Abort 的线程中引发 ThreadStateException,并将 AbortRequested 添加到被中止的线程的 ThreadState 属性中。 直到调用 Resume 后,才在挂起的线程中引发 ThreadAbortException。

3、如果在正在执行非托管代码的托管线程上调用 Abort,则直到线程返回到托管代码才引发 ThreadAbortException。

4、如果同时出现两次对 Abort 的调用,则可能一个调用设置状态信息,而另一个调用执行 Abort。但是,应用程序无法检测到此情况。

5、对线程调用了 Abort 后,线程状态包括 AbortRequested。 成功调用 Abort 而使线程终止后,线程状态更改为 Stopped。如果有足够的权限,作为 Abort 目标的线程就可以使用 ResetAbort 方法取消中止操作。有关说明如何调用 ResetAbort 方法的示例,请参见 ThreadAbortException 类。

另外:
WPF还提供一种定时器的线程
private System.Threading.Timer sendin10mstimer;

sendin10mstimer = new System.Threading.Timer(new TimerCallback(sendCANmessagein10mstimer), this, 50, 10);
每隔xxms执行一次线程,可用于定时周期性执行一些命令

如下方法可以释放此线程的资源,可用用于释放线程相关资源
sendin10mstimer.Dispose();

另外当主程序关闭时,需要调用方法 将所有的线程关闭,否则可能UI前台界面关闭,但后台线程依然在执行的情况。
简单粗暴的方法是windows 关闭的的函数中调用
private void Window_Closed(object sender, EventArgs e)
{

        Environment.Exit(0);

    }

所有资源将被销毁

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值