首页 > 其他分享 >线程相关知识及应用

线程相关知识及应用

时间:2024-08-28 15:25:06浏览次数:9  
标签:函数 鼠标 知识 线程 应用 按钮 运行 构造函数

1.在运行打印结果时,窗体Form1是无法移动的,这就是窗体作为主线程被阻塞。

有时候我们难免会遇到要做特别消耗时间的一些操作。

因此,解决上述问题 就要用多线程

2.按钮2点击事件,注册一个线程来运行Run这个函数,而thread.Start表示注册的线程开始运行。

按钮3点击事件是获取线程的状态

3.第一个是只含一个参数的构造函数

第二个是含多个的构造函数

在按钮4点击事件里第三个是注册线程来运行函数1,在thread.Start里面将需要的参数进行赋值。

第四个是注册线程来运行函数2并将需要的参数进行赋值。

注:第三个和第四个表达的方式是差不多的

区别:(1)第三个只能传一个参数,而第四个可以不传参数,也可以传一个,也可以传多个参数

4.构造两个函数

注册线程A来运行吃饭函数,注册线程B来运行睡觉函数,注册线程C来控制线程A和B,当线程A运行完之后线程B再运行,运行完后停止线程。

5.第一个就是定义要抢两张票

第二个是构造一个抢票函数

其中lock相当于一个门,对于多线程抢占一个变量时如果没有门就会引起争斗,导致票这个变量变为负数。

因此需要lock在有一个线程进来时将门锁住直至运行结束放其他一个线程进来。

6.下面代码中1和2运行结果等于3,Invoke是一种委托用来执行里面的行为

7.第一个是构造一个函数来改变标签上的文本显示。

第二个是按钮点击事件

第三个是一个异步操作来运行构造函数

第四个是防止线程阻塞,做一个线程的延续,也叫线程的异步来执行Console.WriteLine(task.Result);这个语句

8.第一个构造函数

第二个是子线程而if语句是主线程所以不安全,因此委托执行这个Console.WriteLine("当前线程名称>:" + Thread.CurrentThread.Name);

Console.WriteLine("当前线程ID>:" + Thread.CurrentThread.ManagedThreadId);

button1.Text = index.ToString();语句

先命名和获取ID,然后获取当前的线程和ID

按钮2点击事件就是用来改变当前线程名称的,这里没有命名所以为空

9.第一个构造函数判断鼠标长按时间index最多为5并且将index数字显示在窗体上。

第二个是鼠标按下事件,其中flag是判断鼠标有没有在按住按钮。

第三个是鼠标抬起事件这时鼠标已经抬起

10.(1)第一个是定义两个线程

第二个是当前坐标

第三个构造函数MoveRunRow时实现按钮的垂直运动

这个MoveRunCol构造函数时实现水平移动

(2)

(3)出现这个问题代表线程执行时是不安全的

所以,添加这个代码就可以在线程不安全情况下运行

标签:函数,鼠标,知识,线程,应用,按钮,运行,构造函数
From: https://blog.csdn.net/zxkiri/article/details/141608323

相关文章

  • 简化登录流程,助力应用建立用户体系
    随着智能手机和移动应用的普及,用户需要在不同的应用中注册和登录账号,传统的账号注册和登录流程需要用户输入用户名和密码,这不仅繁琐而且容易造成用户流失。华为账号服务(AccountKit)提供简单、快速、安全的登录功能,让用户快捷地使用华为账号登录应用。用户授权后,华为账号可提供头......
  • c#关于同步 /异常/多线程/事件 事例
    sync同步async异步,要与await成对使用Thread //计算程序执行时间StopWatch sw=StopWatch.Start();转自:https://codeload.github.com/zhaoxueliang86/WinFormsAsyncAwait/zip/refs/heads/BilibiliB站UP主:银色 usingSystem.Diagnostics;usingSystem.Text;na......
  • TransmittableThreadLocal实现父子线程之间数据传递
    1、引入依赖<dependency><groupId>com.alibaba</groupId><artifactId>transmittable-thread-local</artifactId><version>2.14.5</version></dependency>2、传递String参数publicclassTransmittableThreadLocalDe......
  • Vue3知识点
    什么是Vue3用于构建用户界面的渐进式框架Vue2和Vue3的区别响应式系统的重写:使用Proxy代替defineProperty实现数据响应式。重写虚拟DOM的实现和Tree-Shaking销毁和卸载的改进,销毁前不需要执行额外的操作生命周期的添加新增的APIvue3是组合式api,vue2是选项式api......
  • OceanBase应用断链无cs_id分析
    今天是第一次写博,在OB工作也有一段时间了,国产数据库相对于oracle,mysql这些可能在排查难度方面可能是较高,但是也有一定的技巧。每天处理过的应用断连问题也有一定的量,全链路诊断其实是一个比较复杂的过程,在可能无法判断的时候,抓包是一个很重要的手段,但是断链一般是偶现,抓包的困难......
  • FPGA第 7 篇,FPGA开发环境搭建,Altrea开发环境搭建,Quartus几个版本之间的区别,以Quartus/
    前言我们知道FPGA的应用领域非常广泛,包括但不限于以下,请看,而且未来应用前景也可以,几乎涵盖了所有涉及数字信号处理和技术实现的领域。上期我们介绍了FPGA的基础知识数字电路,请看,FPGA与数字电路https://blog.csdn.net/weixin_65793170/article/details/141363656?spm=10......
  • C#环境下支持多线程的异步日志记录器的设计与实现
    上篇博文提供了c++版异步日志类,本文提供同样功能的C#版的异步日志管理类。C#环境下支持多线程的异步日志记录器的设计与实现在现代应用程序开发中,日志记录是一项至关重要的任务,它帮助开发者追踪程序的运行情况,调试问题,并进行性能监控。特别是在高并发场景下,传统的同步日志......
  • 使用 nuxi add 快速创建 Nuxt 应用组件
    title:使用nuxiadd快速创建Nuxt应用组件date:2024/8/28updated:2024/8/28author:cmdragonexcerpt:通过使用nuxiadd命令,你可以快速创建Nuxt应用中的各种实体,如组件、页面、布局等。这可以极大地提高开发效率,减少手动创建文件的工作量。希望本文的示例和解释......
  • 揭秘大模型概念与应用:探讨其在不同场景下的落地实践
    大模型是什么?大模型是指模型具有庞大的参数规模和复杂程度的机器学习模型。在深度学习领域,大模型通常是指具有数百万到数十亿参数的神经网络模型。大模型是指模型具有庞大的参数规模和复杂程度的机器学习模型。在深度学习领域,大模型通常是指具有数百万到数十亿参数的神经网......
  • gstreamer教程(5)——构建应用之element的使用
    Element 元素:对于应用程序程序员来说, GstElement 对象是GStreamer中最重要的对象。element(元素)是媒体Pipeline的基本构建块。您使用的所有不同的高级组件都派生自 GstElement。每个解码器、编码器、解复用器、视频或音频输出事实上都是一个 GstElement。什么是元素:......