资源简介

1. 创建一个基于对话框的应用程序。并增加如图所示控件;分别为3个进度条控件关联三个进度条类型的变量;并在对话框的初始化函数中,设定进度条的范围;为编辑框关联一个整型的变量;为12个按钮添加消息处理函数;

2. 定义结构体:用做线程函数的参数传递

typedef struct Threadinfo{

CProgressCtrl *progress;//进度条对象

int speed; //进度条速度

int pos; //进度条位置

} thread,*lpthread;

3. 为对话框增加三个句柄,用于标识各个线程;

HANDLE hThread1; //线程1线程句柄

HANDLE hThread2; //线程2线程句柄

HANDLE hThread3; //线程3线程句柄

在增加三个结构体类型的变量,用做线程函数的参数传递;

HANDLE hThread1; //线程1线程句柄

HANDLE hThread2; //线程2线程句柄

HANDLE hThread3; //线程3线程句柄

4. 新增一个静态的全局变量,用于记录所有线程的状态:static int GlobalVar=10000;

5. 声明并编写线程函数,注意只能有一个参数,且函数的返回值类型也是固定的;函数名可以自定义;

DWORD WINAPI ThreadFun(LPVOID pthread);//线程入口函数

6. 在启动按钮的消息处理函数中编写如下代码:

thread1.progress=&m_progress1;//进度条对象

thread1.speed=100;//速度

thread1.pos=0;//初始位置

hThread1=CreateThread(NULL,0,ThreadFun,&thread1;,0,0);//创建并开始线程

if (!hThread1)

{

MessageBox("创建线程失败");

}

7. 编写线程函数(一般是一个死循环,或者需要花费时间很长的算法!否者就失去了多线程的意义)

DWORD WINAPI ThreadFun(LPVOID pthread) //线程入口函数

{

lpthread temp=(lpthread)pthread;//参数强制转换为结构体类型

temp->progress->SetPos(temp->pos); //设置被传递过来的进度条的位置

while(temp->pos<20)

{

Sleep(temp->speed); /设置速度

temp->pos++; //增加进度

temp->progress->SetPos(temp->pos); //设置进度条的新位置

GlobalVar--;

if(temp->pos==20)

{

temp->pos=0; //进度条满则归0

}

}

return true;

}

8. 在挂起按钮函数中,编写如下代码:

if(SuspendThread(hThread1)==0xFFFFFFFF)

{

MessageBox("挂起失败!进程可能已经死亡或未创建!");

return;

}

9. 在执行按钮函数中,编写如下代码:

if(ResumeThread(hThread1)==0xFFFFFFFF)

{

MessageBox("执行失败!进程可能已经死亡或未创建!");

return;

}

10. 在停止按钮函数中,编写如下代码:

if(TerminateThread(hThread1,0))//前些终止线程

{

CloseHandle(hThread1);//销毁线程句柄

}

else

{

MessageBox("终止进程失败!");

}

11. 为应用程序添加WM_TIMER消息,实时更新全局变量的值到编辑框;

java线程创建销毁_c++多线程的创建挂起执行与销毁相关推荐

  1. java线程集合点_Java多线程学习笔记(三) 甚欢篇

    使人有乍交之欢,不若使其无久处之厌 <小窗幽记>很多时候,我们需要的都不是再多一个线程,我们需要的线程是许多个,我们需要让他们配合.同时我们还有一个愿望就是复用线程,就是将线程当做一个工人 ...

  2. java 线程面试题_JAVA多线程面试题(一)

    1.进程和线程的区别 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用.而线程是在进程中执行的一个任务.Java运行环境是一个包含了不同的类和程序的单一进 ...

  3. java线程代码实现_Java 多线程代码实现讲解

    作为一个完全面向对象的语言,Java提供了类 java.lang.Thread 来方便多线程编程,这个类提供了大量的方法来方便我们控制自己的各个线程.那么如何提供给 Java 我们要线程执行的代码呢? ...

  4. java线程怎么用_Java多线程基本使用

    一.概念 1.进程 1.1进程:是一个正在进行中的程序,每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元. 1.2线程:就是进程中一个独立的控制单元,线程在控制着进程的执行,一 ...

  5. java线程堆栈nid.tid_java多线程死锁 Java问题定位之Java线程堆栈分析(2)

    从上面的main线程看,线程堆栈里面的最直观的信息是当前线程的调用上下文,即从哪个函数调用到哪个函数(从下往上看),正执行到哪一类的哪一行,借助这些信息,我们就对当前系统正在做什么一目了然. 另外,从 ...

  6. Java线程更新ui_android使用多线程更新ui示例分享

    Android线程涉及的技术有:Handler;Message;MessageQueue;Looper;HandlerThread. 下面看一段在线程中更新UI的代码: public class Ma ...

  7. java 线程锁概念_Java多线程——锁概念与锁优化

    为了性能与使用的场景,Java实现锁的方式有非常多.而关于锁主要的实现包含synchronized关键字.AQS框架下的锁,其中的实现都离不开以下的策略. 悲观锁与乐观锁 乐观锁.乐观的想法,认为并发 ...

  8. java线程的任务的三种创建方式,严格地说,就一种,就是如何重写Runnable接口的run()方法

    仅简单演示Java中线程任务的三种创建方式 第一种:使用了适配器模式,有返回值,能抛出异常,任务代码写在Callable.call()方法中,Runnable的run方法会通过适配器调用到Callab ...

  9. java判断线程是否死锁_c++多线程锁 Mutex  自动判断死锁

    c++多线程锁可以使用absl::Mutex  std::mutex这两种,下面是demo代码. 使用absl:Mutex的时候打印: [mutex.cc : 1338] RAW: Cycle: [m ...

最新文章

  1. 在B站如何不动一根手指,就可以养成6级大佬?大四学生发明养号神器,看完你也会...
  2. 获取Json中特定的值
  3. wxWidgets:容器类
  4. 《全栈营销之如何制作个人博客》之二:php环境安装及个人博客后台搭建 让你的博客跑起来...
  5. python判断火车票座位_Python抢票程序优化,可以选择车次和座次
  6. 【含内推码】字节跳动智能创作2022秋招提前批全面开启!
  7. (C++) CreateThread
  8. C语言程序设计:图书管理系统(超详细有登录系统,附代码和实验报告)
  9. dism 分割镜像_UEFI安装win10 1809系统,拆分Windows 映像大于4G文件install.wim的官方教程(亲测完美)...
  10. 4775电子书免费链接
  11. (已更新)娱乐微信小程序源码下载-多玩法安装简单
  12. 怦然心动(Flipped)-1
  13. python dbf 修改_Python修改DBF文件指定列
  14. STM32学习之路——麒麟座V3.2开发板蜂鸣器发声问题
  15. 《计算机网络 自顶向下方法》(第7版)答案(第三章)(三)
  16. STM32的串口硬件流控(RS232/RS485)
  17. 八款流行无线黑客工具,非常实用
  18. YANG模型中<rpc-error>的定义
  19. 2021年高考成绩查询襄阳状元,2021年襄阳高考状元是谁分数多少分,历年襄阳高考状元名单...
  20. 【小技巧】如何向论文原作者索要数据集和源码

热门文章

  1. 微软企业库mysql分页存储_使用微软企业库,非分页sql语句得到分页数据方法
  2. 电梯管理php,写字楼物业电梯管理规定
  3. c++第n小的质数_形形色色的素数 -- 质数定理
  4. 「雕爷学编程」Arduino动手做(36)——WS2812B 4位彩灯模块
  5. 静态内部类实现 单例模式
  6. U3D脚本开发基础(转载)
  7. Dell Latitude 3490 使用 UEFI+GPT 安装 Win7 x64
  8. Java基础系列--instanceof关键字
  9. 剑指Offer——链表中环的入口结点
  10. 【转】Java魔法堂:String.format详解