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

学网站建设好么百度一下知道官网

学网站建设好么,百度一下知道官网,住房和城乡建设部门户网站,浙江省建筑信息平台本项目利用多线程,通过点击按钮猜数字, 知识点 线程 基本概念 进程:一组资源,构成一个正在运行的程序,这些资源包括地址空间、文件句柄以及程序启动需要的其他东西的载体。 线程:体现一个程序的真实执行情况, 线…

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

知识点

线程

基本概念

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

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

线程和进程的关系:

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

声明周期

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

创建(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/a/555474.html

相关文章:

  • 帮助网站网站做优化企业所得税一般交多少
  • 怎么通过贷款网站找做贷款客户windows vps offline性x
  • 淘宝联盟上怎么建设网站运维工程师是青春饭吗
  • 网站建设功能覆盖范围做医学期刊杂志网站
  • 全国房地产网站官方网站营销
  • 手机网站 分享按钮手工制作大全
  • 《Linux篇》进程等待(wait、waitpid)与进程程序替换(exec等接口)
  • 福州网站改版宝塔面板做网站绑定域名
  • 网站上的图片带店面是怎么做的盘搜搜
  • 上海品划网络做网站注册公司流程和费用2020
  • 下载类网站 建设方案台州企业网站模板建站
  • 网站一直显示建设中网站建设从哪入手
  • 谁做的四虎网站是多少钱甘肃网站seo哪家公司好
  • 海外网站建设平台个性化网站模板
  • 上海网站搭建公司哪家好网站建设备案书模板
  • 深圳网站设计招聘山东网站建设哪家专业
  • C++函数:从入门到工程实战
  • 找外包做网站不给代码北京网站建设华网天下科技
  • 网站每天更新的内容是内链吗手工艺品外贸公司网站建设方案
  • 免费制作自己的微网站wordpress 静态缓存
  • 广州网站开发定制传奇电脑版哪个好玩
  • 河南专业建网站网站公司做文员
  • 已有网站开发app终端网站升级维护要多久
  • 北京企业网站建设公司培训网站建设公司排名
  • 云主机开网站教程木工支模价格明细表
  • 音响厂家东莞网站建设网站篡改搜索引擎js
  • 有什么网站是专做婚礼素材的网站维护项目
  • 1个服务器可以做多少个网站四川建设人才网证书查询
  • 2017酷站推荐网站外包网易
  • 网站收录一般多久wordpress flat 下载