C#开发的线程池和管理器 - 开源研究系列文章
上次编写了一个小软件,用于练手及自己的一个小工具集合。今天把其中的线程池和管理器的代码抽取出来,写成一个博文,让需要的朋友能够进行学习和应用。
这个线程管理器包括了3个类库和一个应用程序,见下图:
第一个是窗体磁吸屏幕的类库,以前有过一个VB编的类库(磁性窗体源码开源 - 开源研究系列文章),这次把C#编写的类库放出来,以后有介绍。第二个为线程池定义及管理器的类库,下面有介绍。第三个为主应用程序,下面有介绍。第四个为需要运行的所有线程的列表定义,以后所有需要运行的线程都在这个类库定义,直接替换该DLL文件即可,下面有介绍。
一、线程池代码;
这个类库就是线程池定义及管理的代码。见下图:
主要是定义了线程池的操作方法,以及提供了一个线程管理器窗体。里面的代码大家浏览一下即可,使用的是线程操作的代码,包括线程的添加、启动、停止等等。
二、线程管理器;
类库里面带有一个线程管理器窗体,用于线程的基本操作。直接在主程序里进行初始化及调用即可。
三、线程定义列表;
里面的ThreadArrayList里面定义了所有需要运行的线程,这里进行下介绍。
1)线程运行函数定义;
首先,需要定义线程运行的函数:
需要声明线程testThread1,里面的线程计算的函数TestFunction1,以及线程运行的函数TestThreadFunction1。也可以直接将计算函数放到运行函数里,节省代码及运行函数。
2、线程列表定义;
定义了线程函数,这里就需要初始化线程列表,以便于在主程序里进行线程管理及添加。
这里强调一下,因为.NET Framework里的线程定义,必须将线程设置为前台,即threadModule.ThreadInstance.IsBackground = false; 否则在线程管理器窗体中显示不了线程的状态。
四、主程序调用;
主程序,包括了唯一判断函数,窗体函数,应用程序函数等,具体请读者自己去看代码。见下图:
上面介绍了C#开发的线程池定义及管理器的代码,希望通过此博文,达到引用的效果,对需要的读者能够起到帮助及在其它地方能够使用到。后续会对其它的一些代码进行介绍,敬请期待。
这里提供代码下载:
https://download.csdn.net/download/lzhdim/87357279
Etc.今天是2023年的元旦,在这个时刻,祝愿祖国繁荣昌盛,国泰民安。
C#开发的线程池和管理器 - 开源研究系列文章的更多相关文章
- C#面向插件级别的软件开发 - 开源研究系列文章
在现在的面向对象的分析与设计软件开发过程中,最开始就是面向对象的软件开发.但是,在实际的软件开发过程中,很多都是面向接口的开发方式,这种是一种面向对象开发的模式.但是,今天笔者给大家带来的是面向插件的 ...
- Android开发之线程池使用总结
线程池算是Android开发中非常常用的一个东西了,只要涉及到线程的地方,大多数情况下都会涉及到线程池.Android开发中线程池的使用和Java中线程池的使用基本一致.那么今天我想来总结一下Andr ...
- C#线程篇---线程池如何管理线程(6完结篇)
C#线程基础在前几篇博文中都介绍了,现在最后来挖掘一下线程池的管理机制,也算为这个线程基础做个完结. 我们现在都知道了,线程池线程分为工作者线程和I/O线程,他们是怎么管理的? 对于Microsoft ...
- Webpack: 为Web开发而生的模块管理器[转]
Webpack: 为Web开发而生的模块管理器 原文地址:http://hanjianwei.com/2014/09/10/webpack-package-manager-for-web/ 10 Se ...
- ExecutorService实际上是一个线程池的管理工具
在Java5之后,并发线程这块发生了根本的变化,最重要的莫过于新的启动.调度.管理线程的一大堆API了.在Java5以后,通过Executor来启动线程比用 Thread的start()更好.在新特征 ...
- 线程池的管理类MyThreadPoolManager
import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.Executor; import java.ut ...
- 安卓开发:UI组件-布局管理器和文本显示
接下来的随笔,记录了在学习b站up主:天哥在奔跑,录制的教学视频的同时,进行一个app开发. up主:天哥在奔跑 视频地址:https://www.bilibili.com/video/av38409 ...
- Android 开发 ThreadPool(线程池) 总结
本文是介绍线程池的基础篇. 一.线程池的作用 创建异步线程的弊端: 1.每次new Thread创建对象,导致性能变差. 2.缺乏统一的管理,可能导致无限制的线程运行,严重的后果就是OOM 或者死机. ...
- 如何应用CLR线程池来管理多线程
class Program { static void Main(string[] args) { int intWorkerT ...
- android开发4:Android布局管理器1(线性布局,相对布局RelativeLayout-案例)
控件类概述 View 可视化控件的基类 属性名称 对应方法 描述 android:background setBackgroundResource(int) 设置背景 android:clickabl ...
随机推荐
- 两将军问题和TCP三次握手
两将军问题,又被称为两将军悖论.两军问题, 是一个经典的计算机思想实验. 首先, 为避免混淆,我们需要认识到两将军问题虽然与拜占庭将军问题相关,但两者不是一个东西.拜占庭将军问题是一个更通用的两将军问 ...
- oneplus8手机蓝牙连接tws耳机无法双击退出语音助手
通过蓝牙协议栈我们知道,蓝牙耳机可以通过发送AT指令唤醒或者退出语音助手 唤醒语音助手: AT+BVRA=1 退出语音助手: AT+BVRA=0 但是实际操作中发现双击可以唤醒但再次双击却无法退出语音 ...
- 齐博x1标签之异步加载标签数据
为什么要异步加载标签?他有什么好处 如果一个页面的标签太多,又或者是页面中某一个标签调用数据太慢的话,就会拖慢整个页面的打开,非常影响用户体验.这个时候,用异步加载的话,就可以一块一块的显示,用户体验 ...
- 你应该知道的数仓安全:都是同名Schema惹的祸
摘要:我是管理员账号,怎么还没有权限?当小伙伴询问的时候,我第一时间就会想到都是用户同名Schema惹的祸 本文分享自华为云社区<你应该知道的数仓安全--都是同名Schema惹的祸>,作者 ...
- 沁恒CH32V003F4P6 开发板上手报告和Win10环境配置
CH32V003 沁恒最近推出的低价CH32V003系列, 基于青稞RISC-V2A内核, 48MHz主频, 2KB SRAM, 16KB Flash, 工作电压兼容3.3V和5V. 主要参数如下 S ...
- 浅入浅出 1.7和1.8的 HashMap
前言 HashMap 是我们最最最常用的东西了,它就是我们在大学中学习数据结构的时候,学到的哈希表这种数据结构.面试中,HashMap 的问题也是常客,现在卷到必须答出来了,是必须会的知识. 我在学习 ...
- ahk精简自用
;9:03 2022/8/20 自用 #NoEnv #Warn #SingleInstance Force ;设工作目录为桌面 SetWorkingDir %A_Desktop% ;托盘提示必须放在热 ...
- python渗透测试入门——取代netcat
1.代码及代码讲解. 实验环境:windows10下的linux子系统+kali虚拟机 import argparse import socket import shlex import subpro ...
- 基于 Docker 构建轻量级 CI 系统:Gitea 与 Woodpecker CI 集成
WoodpeckerCI 是一个由社区维护的 DroneCI 分支,使用 Apache License 2.0 许可证发布.社区版进一步扩展了 pipeline 的功能特性.支持对文件路径设置 pip ...
- Perl引用
引用就是C语言中的指针,perl引用是一个标量类型可以指向变量.数组.哈希表(也叫关联数组)甚至子程序,可以应用在程序的任何地方. 在变量前面加一个\就得到了这个变量的一个引用 #!usr/bin/p ...