在使用身份证读卡器时,要求

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 的用法一例的更多相关文章

  1. Thread.join()分析方法

    API: join public final void join() throws InterruptedException 等待该线程终止. 抛出: InterruptedException - 假 ...

  2. Thread.join()方法

    thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程.比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B.t.join() ...

  3. 多线程编程(一) - 关于C#中Thread.Join()

    Thread.Join()在MSDN中的解释很模糊:Blocks the calling thread until a thread terminates 有两个主要问题:1.什么是the calli ...

  4. 关于C#中Thread.Join()的一点理解

    原文地址:http://www.cnblogs.com/slikyn/articles/1525940.html 今天是第一次在C#中接触Thread,自己研究了一下其中Thread.Join()这个 ...

  5. C#中Thread.Join()的理解

    最近在项目中使用多线程,但是对多线程的一些用法和概念还有有些模棱两可,为了搞清楚查阅了一写资料,写下这篇日志加深理解吧. Thread.Join()在MSDN中的解释很模糊:Blocks the ca ...

  6. Java 浅析Thread.join()

    概要 本文分为三部分对 Thread.join() 进行分析: 1. join() 的示例和作用 2. join() 源码分析 3. 对网上其他分析 join() 的文章提出疑问 1. join() ...

  7. Java 浅析 Thread.join()

    概要 本文分为三部分对 Thread.join() 进行分析: 1. join() 的示例和作用 2. join() 源码分析 3. 对网上其他分析 join() 的文章提出疑问 1. join() ...

  8. java多线程同步以及线程间通信详解&消费者生产者模式&死锁&Thread.join()(多线程编程之二)

    本篇我们将讨论以下知识点: 1.线程同步问题的产生 什么是线程同步问题,我们先来看一段卖票系统的代码,然后再分析这个问题: package com.zejian.test; /** * @author ...

  9. thread.join 从异步执行变成同步

    Java的线程模型为我们提供了更好的解决方案,这就是join方法.在前面已经讨论过,join的功能就是使用线程 从异步执行变成同步执行 当线程变成同步执行后,就和从普通的方法中得到返回数据没有什么区别 ...

随机推荐

  1. 【转】RESTful Web Services初探

    近几年,RESTful Web Services渐渐开始流行,大量用于解决异构系统间的通信问题.很多网站和应用提供的API,都是基于RESTful风格的Web Services,比较著名的包括Twit ...

  2. 【总结】Java线程同步机制深刻阐述

    原文:http://hxraid.iteye.com/blog/667437 我们可以在计算机上运行各种计算机软件程序.每一个运行的程序可能包括多个独立运行的线程(Thread). 线程(Thread ...

  3. Spring 事务配置的几种方式

    参考:http://www.blogjava.net/robbie/archive/2009/04/05/264003.html http://www.cnblogs.com/appleat/arch ...

  4. 常用加密算法的Java实现总结

    常用加密算法的Java实现(一) ——单向加密算法MD5和SHA 1.Java的安全体系架构 1.1           Java的安全体系架构介绍 Java中为安全框架提供类和接口.JDK 安全 A ...

  5. Uubuntu 14.04 LTS反编译apk

    使用apktool反编译apk 1.安装apktool apktool是Google提供的APK编译工具,能够反编译及回编译apk,需要Java环境的支持(在此不再赘述Java的安装与配置,详见< ...

  6. [原]素数筛法【Sieve Of Eratosthenes + Sieve Of Euler】

    拖了有段时间,今天来总结下两个常用的素数筛法: 1.sieve of Eratosthenes[埃氏筛法] 这是最简单朴素的素数筛法了,根据wikipedia,时间复杂度为 ,空间复杂度为O(n). ...

  7. 如何获取supersocket的源代码

    源代码的地址:https://github.com/kerryjiang/SuperSocket 安装git之后,可以使用命令行git clone https://github.com/kerryji ...

  8. Shadow mapping

    http://www.cnblogs.com/cxrs/archive/2009/10/17/1585038.html 1.什么是Shadow Maping?      Shadow Mapping是 ...

  9. python——no module named XX

    加PYTHONPATH吧,新建一个系统环境变量,把你的目录复制进去即可

  10. Qt之国际化

    简介 Qt国际化属于Qt高级中的一部分,本想着放到后面来说,上节刚好介绍了Qt Linguist,趁热打铁就一起了解下. 对于绝大多数的应用程序,在刚启动时,需要加载默认的语言(或最后一次设置的语言) ...