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

消防网站建设的风格天津seo推广服务

消防网站建设的风格,天津seo推广服务,惠州广告公司有哪些,晋江网站建设公司本项目利用多线程,通过点击按钮猜数字, 知识点 线程 基本概念 进程:一组资源,构成一个正在运行的程序,这些资源包括地址空间、文件句柄以及程序启动需要的其他东西的载体。 线程:体现一个程序的真实执行情况, 线…

本项目利用多线程,通过点击按钮猜数字,

知识点

线程

基本概念

进程:一组资源,构成一个正在运行的程序,这些资源包括地址空间、文件句柄以及程序启动需要的其他东西的载体。

线程:体现一个程序的真实执行情况,

线程和进程的关系:

  • 默认情况下,一个进程只包含一个线程,从程序开始执行一直到程序结束
  • 一个线程可以发起另外一个线程,一个进程都可能在不同状态有多个线程来执行程序的不同部分
  • 如果一个进程中有多个线程,它们会分享进程的资源
  • 线程是由系统负责调度的处理器(而不是进程)上的执行单元

声明周期

创建、启动、运行、阻塞、等待、睡眠、终止。

创建(Created):线程对象被创建,但尚未开始执行。它处于就绪状态,等待被调度执行。

启动(Started):调用线程的Start方法后,线程进入启动状态。此时,线程堆栈被分配,但线程尚未开始执行。

运行(Running):线程被调度并开始执行。它正在使用CPU资源执行代码。

阻塞(Blocked):线程因为等待某个资源(如锁、文件I/O等)而无法继续执行。阻塞状态可以是正常的,也可能是由于异常导致的。

等待(Waiting):线程正在等待某个事件或方法完成,如Thread.Sleep、Monitor.Wait等。

睡眠(Sleeping):线程因为调用了Thread.Sleep方法而暂时停止执行。它会在指定的时间后自动唤醒。

终止(Terminated):线程的执行完成,或者因为异常而被强行终止。一旦线程终止,它就不能再次被启动。

各个状态的转换为:

新建(New)→ 创建(Created)
创建(Created)→ 启动(Started)
启动(Started)→ 运行(Running)
运行(Running)→ 阻塞(Blocked)/ 等待(Waiting)/ 睡眠(Sleeping)
阻塞(Blocked)/ 等待(Waiting)/ 睡眠(Sleeping)→ 运行(Running)
运行(Running)→ 终止(Terminated)

Thread P_th = new Thread(new ThreadStart(方法名称));//创建线程。方法名称可以是委托
P_th.IsBackground = true;//设置线程为后台线程
P_th.Start();//开始执行线程

Control.ControlCollection

这里做个区分。control和Control.ControlCollection的区别。

Control

Control 类是 Windows Forms 中所有控件的基类。它提供了控件的基本功能,如大小、位置、颜色、字体等。常见的控件如 ButtonTextBoxLabel 等都继承自 Control 类。

主要属性和方法:

  • Text: 获取或设置与控件关联的文本。
  • Location: 获取或设置控件的位置。
  • Size: 获取或设置控件的大小。
  • Visible: 获取或设置一个值,该值指示是否显示该控件。
  • Enabled: 获取或设置一个值,该值指示控件是否可以对用户交互作出响应。
  • BackColor: 获取或设置控件的背景色。
  • ForeColor: 获取或设置控件的前景色。
  • Font: 获取或设置控件显示的文本的字体。
  • Parent: 获取或设置控件的父容器。
  • Controls: 获取包含在控件内的控件的集合。

Control.ControlCollection

ControlCollection 类表示控件的集合,通常用于管理容器控件(如 FormPanelGroupBox 等)中的子控件。每个容器控件都有一个 Controls 属性,该属性返回一个 ControlCollection 对象,用于管理其子控件。

  • Count: 获取集合中的控件数。

  • Item: 获取或设置集合中指定索引处的控件。

  • Add: 将指定的控件添加到集合中。

  • Remove: 从集合中移除指定的控件。当你已经有一个控件的实例,并且想从集合中移除它时使用。

  • Clear: 从集合中移除所有控件。

  • Contains: 确定集合中是否包含指定的控件。

  • IndexOf: 返回集合中指定控件的索引。

  • ContainsKey:确定 Control.ControlCollection是否包含具有指定键的项。这里的项通常是控件的 Name 属性)

  • RemoveAt:在指定的索引位置从控件集合移除控件,当你知道要移除的控件在集合中的索引位置时使用。

    //Remove和RemoveAt的区别
    // 创建两个按钮
    Button button1 = new Button { Name = "Button1", Text = "Click Me 1" };
    Button button2 = new Button { Name = "Button2", Text = "Click Me 2" };// 将按钮添加到控件集合
    Controls.Add(button1);
    Controls.Add(button2);// 使用 Remove 移除 button1
    Controls.Remove(button1);// 使用 RemoveAt 移除索引为 0 的控件(即 button2)
    Controls.RemoveAt(0);//ContainsKey和Contains的区别
    if (Controls.ContainsKey("button1"))
    {// 集合中包含名为 "button1" 的控件
    }Button button1 = new Button();
    Controls.Add(button1);if (Controls.Contains(button1))
    {// 集合中包含 button1 控件实例
    }
    

Invoke

Invoke其实用法只有两种情况:

Control的Invoke
Delegate的Invoke
也就是说,Invoke前面要么是一个控件,要么是一个委托对象。本项目用到的control.invoke。

control.invoke(参数[delegate])方法:在拥有此控件的基础窗口句柄的线程上执行指定的委托。(同步)

其本质是一个方法,通过对象来调用。

Control的Invoke一般用于解决跨线程访问的问题,比如你想操作一个按钮button,你就要用button.Invoke,你想操作一个文本label,你就要用label.Invoke.但是大家会发现很麻烦,如果我既然想操作button,又操作label,能不能写在一起呢?有没有更简单的方法呢?

其实主窗体使一个Form,Form自然也是继承了Control的,所以Form也有Invoke的方法,如果你想省点事,就可以直接调用Form.Invoke,这就是常见的this.Invoke.

为什么有的Invoke前面啥都没有?其实前面是this,只不过省略了.

MethodInvoker

一个委托,该委托可以执行托管代码中声明为void且不接受任何参数的任何方法。

在对控件的 invoke 方法进行调用时或需要一个简单委托又不想自己定义时可以使用该委托

  //跨线程访问Invoke(new MethodInvoker(delegate{textBox1.Text = "修改了";})); //开启新线程 td,  在新线程中使用MethodInvoker 委托执行 run()方法, 这个时候 run() 方法其实是在主线程中执行的, 这样就避免了 //跨线程访问控件private void btnOK_Click(object sender, EventArgs e){Thread td = new Thread(new ThreadStart(threadRun));td.Start();}/// <summary>/// 主线程要执行的方法/// </summary>private void run(){this.textBox1.Text = "修改了";}/// <summary>/// 子线程线程方法/// </summary>private void threadRun(){MethodInvoker In = new MethodInvoker(run);this.BeginInvoke(In);}

另外关于MethodInvoker和EventHandler的区别。

public delegate void MethodInvoker();

public delegate void EventHandler(object sender, EventArgs e);

MethodInvoker 是不带参数的委托。
EventHandler 是可带参数的委托。

其实跨线程访问控件,就是重新创建一个线程,然后调用主线程的方法。

三元条件运算符

condition ? consequent : alternative//condition 表达式的计算结果必须为 true 或 false。 若 condition 的计算结果为 true,将计算 consequent,其结果成为运算结果。 若 condition 的计算结果为 false,将计算 alternative,其结果成为运算结果is this condition true ? yes : no

实现逻辑

  • 自动生成60个按钮,每个按钮根据数值依次命名

  • 生成随机数,根据生成的随机数,依次点击按钮,如果按钮上的数字和随机产生的数字一致,则提示数字猜对,否则则继续猜

在这里插入图片描述

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

相关文章:

  • 让人做网站 需要准备什么条件电商营销策划方案范文
  • 专业做网站设计的公司百度搜索引擎关键词
  • 怎么创建东莞百度seo电话
  • wordpress 瀑布流主题排名优化怎么做
  • 潍坊网站网站建设网络广告策划书模板范文
  • 网站默认模板微信上如何投放广告
  • 快速建网站工具成都推广系统
  • 网络设计师干什么的汕头seo外包平台
  • 头条网站模版网站建设公司好
  • 郑州哪里有做网站的安全优化大师下载
  • 地方生活门户网站有哪些网站免费优化
  • 做产品网站建设电商网站seo怎么做
  • 做信息类网站seo网站快速排名外包
  • 网站访问慢原因广州疫情最新情况
  • 网站维护建设费应计入科目网络营销策略理论
  • 做网站竞价还需要推广公司淘宝关键词排名查询
  • 2017年用什么语言做网站新产品推广方案策划
  • 房地产建设企业网站浏览器地址栏怎么打开
  • 全国购网站建设王通seo
  • 用html5做京东网站代码武汉网络营销公司排名
  • 北京专业的做网站seo技术交流论坛
  • 江苏省建设厅网站挂证存疑名单长春网站seo哪家好
  • 好用的wordpress编辑器站长工具seo综合查询烟雨楼
  • 字体排版设计网站sem是什么分析方法
  • 专门做鞋的网站信息流优化师是什么
  • 营销型网站哪家做的好百度权重怎么查询
  • 上海专业网站建设流程谷歌外贸平台叫什么
  • 如何能让企业做网站的打算mac923水蜜桃923色号
  • 携程做旅游的网站查关键词
  • 凡科建站是什么网站关键词优化排名外包