当前位置: 首页 > wzjs >正文

网站全局变量seo文章推广

网站全局变量,seo文章推广,wordpress程序增大,响应式博客网站模板什么是线程? 首先我们要弄明白什么是线程,线程和线程池有啥区别? C# 多线程应用(同步异步)_c# 异步线程-CSDN博客 补充:ManualResetEvent 的使用 ManualResetEvent 是一种线程同步机制,用于控制一个或者多个线程的执…

什么是线程?

首先我们要弄明白什么是线程,线程和线程池有啥区别?

C# 多线程应用(同步异步)_c# 异步线程-CSDN博客

 补充:ManualResetEvent 的使用

ManualResetEvent 是一种线程同步机制,用于控制一个或者多个线程的执行。它允许一个线程发出信号,通知其他等待的线程继续执行。ManualResetEvent 的初始状态可以是有信号(true)或无信号(false),通过调用 Set() 和Reset() 方法来改变其状态

基本用法

ManualResetEvent 的基本用法

  1. 创建 ManualResetEvent 实例    ManualResetEvent  mre = new ManualResetEvent(false);
  2. 线程等到信号:  mre.WaitOne();   //  阻塞当前线程,直到收到信号
  3. 发出信号: mre.Set();    // 发出信号,所有等待的线程将继续执行
  4. 重置信号:mre.Reset();   //将状态重置为无信号,阻塞后续调用WaitOne 的线程 

 控件

  • Proccceed 的功能是发出信号
  • reset 的功能是重置信号   

 展示效果

 实例化 ManualResetEvent

 //因为有4个线程,所以实例化四个static ManualResetEvent manual=new ManualResetEvent(true);static ManualResetEvent manual2=new ManualResetEvent(true);static ManualResetEvent manual3=new ManualResetEvent(true);static ManualResetEvent manual4=new ManualResetEvent(true);

 递进增添1

  private void addNum(object obj){while (true){object[]obb=(object[])obj;TextBox tb = (TextBox)obb[0];//每次添加1tb.Text=(Convert.ToInt16(tb.Text)+1).ToString();ManualResetEvent mre = (ManualResetEvent)obb[1];//防止线程阻塞mre.WaitOne();Thread.Sleep(1000);}}

调用线程池、总功能实现

 private void btn_all_Click(object sender, EventArgs e){//创建了两个元素的数组//第一个是textBox//第二个是manualobject[] ob1 = new object[2] { textBox1, manual };object[] ob2 = new object[2] {textBox2,manual2};object[] ob3 = new object[2] {textBox3,manual3};object[] ob4 = new object[2] {textBox4,manual4 };ThreadPool.QueueUserWorkItem(addNum, ob1);ThreadPool.QueueUserWorkItem(addNum, ob2);ThreadPool.QueueUserWorkItem(addNum, ob3);ThreadPool.QueueUserWorkItem(addNum, ob4);}

声明方法

private void operate(ManualResetEvent s)
{s.Set();
}
private void Stop(ManualResetEvent v)
{v.Reset();
}

发出信号功能

 private void btn_pro1_Click(object sender, EventArgs e){operate(manual);}private void btn_pro2_Click(object sender, EventArgs e){operate(manual2);}private void btn_pro3_Click(object sender, EventArgs e){operate(manual3);}private void btn_pro4_Click(object sender, EventArgs e){operate(manual4);}

重置信号功能

 private void btn_stop1_Click(object sender, EventArgs e){Stop(manual);}private void btn_stop2_Click(object sender, EventArgs e){Stop(manual2);}private void btn_stop3_Click(object sender, EventArgs e){Stop(manual3);}private void btn_stop4_Click(object sender, EventArgs e){Stop(manual4);}

线程总代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;namespace _15.Using_ThreadPool
{public partial class Form1 : Form{public Form1(){InitializeComponent();CheckForIllegalCrossThreadCalls=false;}//因为有4个线程,所以实例化四个static ManualResetEvent manual=new ManualResetEvent(true);static ManualResetEvent manual2=new ManualResetEvent(true);static ManualResetEvent manual3=new ManualResetEvent(true);static ManualResetEvent manual4=new ManualResetEvent(true);private void btn_all_Click(object sender, EventArgs e){//创建了两个元素的数组//第一个是textBox//第二个是manualobject[] ob1 = new object[2] { textBox1, manual };object[] ob2 = new object[2] {textBox2,manual2};object[] ob3 = new object[2] {textBox3,manual3};object[] ob4 = new object[2] {textBox4,manual4 };ThreadPool.QueueUserWorkItem(addNum, ob1);ThreadPool.QueueUserWorkItem(addNum, ob2);ThreadPool.QueueUserWorkItem(addNum, ob3);ThreadPool.QueueUserWorkItem(addNum, ob4);}private void addNum(object obj){while (true){object[]obb=(object[])obj;TextBox tb = (TextBox)obb[0];tb.Text=(Convert.ToInt16(tb.Text)+1).ToString();ManualResetEvent mre = (ManualResetEvent)obb[1];mre.WaitOne();Thread.Sleep(1000);}}private void operate(ManualResetEvent s){s.Set();}private void Stop(ManualResetEvent v){v.Reset();}private void btn_pro1_Click(object sender, EventArgs e){operate(manual);}private void btn_pro2_Click(object sender, EventArgs e){operate(manual2);}private void btn_pro3_Click(object sender, EventArgs e){operate(manual3);}private void btn_pro4_Click(object sender, EventArgs e){operate(manual4);}private void btn_stop1_Click(object sender, EventArgs e){Stop(manual);}private void btn_stop2_Click(object sender, EventArgs e){Stop(manual2);}private void btn_stop3_Click(object sender, EventArgs e){Stop(manual3);}private void btn_stop4_Click(object sender, EventArgs e){Stop(manual4);}}
}

http://www.dtcms.com/wzjs/83412.html

相关文章:

  • 360网站做推广深圳网络推广哪家比较好
  • 公司网站建设介绍烟台seo关键词排名
  • 本地做网站贵班级优化大师头像
  • 内部网站开发网站自动秒收录工具
  • 班级网站建设主题龙岗网站建设
  • 网站建设分辨率做seo需要哪些知识
  • 网站名称备案教程seo推广排名网站
  • 网站暂时关闭 seo人民日报今日头条新闻
  • 柴沟堡做网站淄博seo
  • 十堰网站设计公司百度推广费用多少钱
  • 区块链交易网站建设中国域名注册局官网
  • 外贸移动商城网站建设怎么建立自己的企业网站
  • 怎么给网站做 360快照个人博客网页设计
  • 渭南市住建设局网站最新搜索引擎排名
  • 深圳市科技网站开发seo百度刷排名
  • 网站找谁做靠谱吗seo公司后付费
  • 网站首页psd百度热门排行榜
  • 青岛城阳软件网站开发百度seo关键词排名推荐
  • 电商的网站怎么做的好中国教育培训网
  • 医疗室内设计网站推荐网络营销具有哪些优势和吸引力
  • 网站建设与维护就业前景永久免费的电销外呼系统
  • 网站基础上添加建设方案模板网站排名优化方案
  • 河南共青团智慧团建登录入口南宁百度seo
  • 打鱼网站建设北京网站seo招聘
  • 网站内容运营荆州seo推广
  • wordpress无法添加小工具关键词优化排名用什么软件比较好
  • 建筑网站推荐百度搜索指数和资讯指数
  • 外贸公司网站设计哪家好网站技术外包公司
  • 网站建设中服务器的搭建方式哈尔滨关键词优化报价
  • 手机微信网站开发教程图片外链上传网站