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

报社网站建设之思考深圳网络营销软件

报社网站建设之思考,深圳网络营销软件,推荐莆田交友网站,网站设计网页配色本项目利用多线程,通过点击按钮猜数字, 知识点 线程 基本概念 进程:一组资源,构成一个正在运行的程序,这些资源包括地址空间、文件句柄以及程序启动需要的其他东西的载体。 线程:体现一个程序的真实执行情况, 线…

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

知识点

线程

基本概念

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

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

线程和进程的关系:

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

声明周期

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

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

相关文章:

  • 用公司网站后缀做邮箱深圳seo顾问
  • 网站建设模板是什么深圳全网推广平台
  • 阿里云做的网站怎么样深圳最新消息今天
  • 资讯类响应式网站模板网络策划
  • 网站开发中 敬请期待网站优化系统
  • 建筑企业网站有哪些电商产品推广方案
  • 跨境电商独立站建站服务aso搜索优化
  • 做网站如何排版陕西seo公司
  • wordpres做影视网站市场调研的方法有哪些
  • 苹果网站设计宁德市人力资源和社会保障局
  • 做自媒体素材搬运网站爱站关键词挖掘查询工具
  • 做网站优化找谁google adsense
  • 北京建设网站的杭州网络推广外包
  • 网络营销是什么样子的广东seo点击排名软件哪家好
  • 旅游网站B2C培训课程
  • 做优化网站哪个公司好长沙seo霜天
  • 免费有趣的网站百度站长工具查询
  • 苏州建设监督网站河南网站建站推广
  • 男人女人做那事网站今日重大国际新闻军事
  • 网站建设顾问软文案例500字
  • 建网站啦自己建网站需要钱吗
  • wordpress create a network南京百度提升优化
  • wordpress calendar网站的优化公司
  • wordpress bindchatseo有哪些网站
  • 九江市建设工程质量监督站网站推广百度百科
  • 丹东建设网站建站软件
  • 做视频大赛推广的网站搜狗seo怎么做
  • 企业网站模板下载需谨慎半数留有后门网络营销模式有哪些?
  • 关键词优化一般收费价格郑州seo关键词排名优化
  • wordpress商品展示模板seo站长助手