Thread .join 的用法一例
在使用身份证读卡器时,要求
1. 身份证读到身份证 就 停止线程.
2. 关闭界面时会 自动停止调用读身份证的线程.这时候就需要用到 Thead.join
例子如下:
Thread thread;
private void barButtonItem6_ItemClick(object sender, ItemClickEventArgs e)
{
ThreadStart threadStart = new ThreadStart(processData);
thread = new Thread(threadStart);
thread.Start();
this.barButtonItem6.Enabled = false;
}
bool run = true;
public void processData()
{
if ((iRetCOM == 1) || (iRetUSB == 1))
{
run = true;
while (run)
{
try
{
if ((iRetCOM == 1) || (iRetUSB == 1))
{
int authenticate = CVRSDK.CVR_Authenticate();
if (authenticate == 1)
{
int readContent = CVRSDK.CVR_Read_Content(4);
if (readContent == 1)
{
//this.label10.Text = "读卡操作成功!";
this.Invoke(new FillDataCallBack(FillData));
}
else
{
//this.label10.Text = "读卡操作失败!";
}
}
else
{
//MessageBox.Show("未放卡或卡片放置不正确");
}
}
else
{
MessageBox.Show("初始化失败!");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
}
public delegate void FillDataCallBack();
public void FillData()
{}
private void ElderLyAddNew_FormClosing(object sender, FormClosingEventArgs e)
{
try
{
this.run = false;
// 关建在这里 ,这句话说明 要求 thread 线程结束时才执行下面有的代码. 把 thread 对应的线程执行完后 才会向下执行.
thread.Join();
CVRSDK.CVR_CloseComm();
// this.Close();
}
catch (Exception ex)
{
// MessageBox.Show(ex.ToString());
}
}
Thread .join 的用法一例的更多相关文章
- Thread.join()分析方法
API: join public final void join() throws InterruptedException 等待该线程终止. 抛出: InterruptedException - 假 ...
- Thread.join()方法
thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程.比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B.t.join() ...
- 多线程编程(一) - 关于C#中Thread.Join()
Thread.Join()在MSDN中的解释很模糊:Blocks the calling thread until a thread terminates 有两个主要问题:1.什么是the calli ...
- 关于C#中Thread.Join()的一点理解
原文地址:http://www.cnblogs.com/slikyn/articles/1525940.html 今天是第一次在C#中接触Thread,自己研究了一下其中Thread.Join()这个 ...
- C#中Thread.Join()的理解
最近在项目中使用多线程,但是对多线程的一些用法和概念还有有些模棱两可,为了搞清楚查阅了一写资料,写下这篇日志加深理解吧. Thread.Join()在MSDN中的解释很模糊:Blocks the ca ...
- Java 浅析Thread.join()
概要 本文分为三部分对 Thread.join() 进行分析: 1. join() 的示例和作用 2. join() 源码分析 3. 对网上其他分析 join() 的文章提出疑问 1. join() ...
- Java 浅析 Thread.join()
概要 本文分为三部分对 Thread.join() 进行分析: 1. join() 的示例和作用 2. join() 源码分析 3. 对网上其他分析 join() 的文章提出疑问 1. join() ...
- java多线程同步以及线程间通信详解&消费者生产者模式&死锁&Thread.join()(多线程编程之二)
本篇我们将讨论以下知识点: 1.线程同步问题的产生 什么是线程同步问题,我们先来看一段卖票系统的代码,然后再分析这个问题: package com.zejian.test; /** * @author ...
- thread.join 从异步执行变成同步
Java的线程模型为我们提供了更好的解决方案,这就是join方法.在前面已经讨论过,join的功能就是使用线程 从异步执行变成同步执行 当线程变成同步执行后,就和从普通的方法中得到返回数据没有什么区别 ...
随机推荐
- Redis的Set操作
集合的性质: 唯一性,无序性,确定性 注: 在string和link的命令中,可以通过range 来访问string中的某几个字符或某几个元素 但,因为集合的无序性,无法通过下标或范围来访问部分元素. ...
- gdb与adb相关命令总结
在使用gdb与adb时需要注意一些类似于权限的问题,比如设备需要root,设备root后命令行下需要 切换用户到root用户下操作,又比如相关的目录或文件是否有足够的权限等等,总结为如下: (以下示例 ...
- Linux命令-free
显示系统内存使用情况 free [-m / -g / -h] [root@localhost test]# free -m total used free shared buff/cache ava ...
- Spring框架学习 - 配置
[资料] ★★☆ Spring 中提供一些Aware相关接口,像是BeanFactoryAware. ApplicationContextAware.ResourceLoaderAware.Servl ...
- javascript 网络是否连接的几种方案
js 网络是否连接的几种方案 1.通过html5的新属性: window.onload = function () { var isOnLine = navigator.on ...
- 易犯的PHP小错误及相应分析
变量声明如果在一条语句中声明一个变量,如下所示:$var = 'value'; 编译器首先会求出语句右半部分的值,恰恰正是语句的这一部分常常会引发错误.如果使用的语法不正确,就会出现解析错误. 解析错 ...
- BroadcastService的测试用例
程序运行起来之后,需要用多个telnet客户端来进行测试 连接的命令为conn deviceNumber 广播命令为broa message 需要注意的是:示例代码有bug, broadcastDic ...
- mac 10.8 编译提示找不到GCC
本机已安装xcode,但是在编译prce时提示找不到GCC,要不安装gcc.pkg ,简单起见,启动xcode->menu->preferences->Dowloads 把里面的co ...
- JOIN_TAB
typedef struct st_join_table { st_join_table() {} /* Remove gcc warning */ TABLE *table; KEYUSE *key ...
- 【笨嘴拙舌WINDOWS】剪切板
Windows剪贴板是一种比较简单同时也是开销比较小的IPC(InterProcess Communication,进程间通讯)机制.Windows系统支持剪贴板IPC的基本机制是由系统预留的一块全局 ...