步步为营-65-线程小例子

1 摇奖机

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 _01_摇奖机
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            CheckForIllegalCrossThreadCalls = false;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            while (true)
            {

                Random r = new Random();
                label1.Text = r.Next(0, 10).ToString();
                label2.Text = r.Next(0, 10).ToString();
                label3.Text = r.Next(0, 10).ToString();

                Thread.Sleep(1000);

            }

        }

        private void button2_Click(object sender, EventArgs e)
        {

            Thread th = new Thread(() =>
            {
                Random r = new Random();
                while (true)
                {

                    label1.Text = r.Next(0, 10).ToString();
                    label2.Text = r.Next(0, 10).ToString();
                    label3.Text = r.Next(0, 10).ToString();

                    Thread.Sleep(1000);
                }
            });
            th.IsBackground = true;
            th.Start();
        }
    }
}

2 拷贝文件

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace _02_文件拷贝
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //01 创建 线程
            Thread th = new Thread(() =>
            {
                //进行文件的读写操作
                //01-01 读读读
                using (FileStream fsReader = new FileStream("2015-04-14基础加强1.rar",FileMode.Open))
                {
                    //01-02 写写写
                    using (FileStream fsWrite = new FileStream( "a.rar",FileMode.Create))
                    {
                        long count = fsReader.Length;
                        long currentCount = 0;
                        //设置每次读取的长度
                        byte[] bs = new byte[1024 * 1024];
                        int len;
                        while ((len = fsReader.Read(bs,0,bs.Length))>0)
                        {
                            currentCount += len;
                            progressBar1.Invoke(
                                new Action<int>((xh) => { progressBar1.Value = xh; }), (int)(currentCount/count)*100
                                );
                            fsWrite.Write(bs,0,len);
                        }
                    }
                }
            });
            //02 设置为后台线程
            th.IsBackground = true;
            //03 启动
            th.Start();
        }
    }
}

3

时间: 2024-12-15 13:56:23

步步为营-65-线程小例子的相关文章

1个争用资源的简单线程小例子

main()本身就是一线程,现在在main内部再创建另一个线程, 例子只是简单的在两个线程中打印了一下TID和PID以及获取本身PID,当然两个线程的TID是一样的,PID是不一样的. 这里主要说的是:两个线程一起运行,屏幕上显示的各线程的内容,因为一起争用资源,造成了打印信息内容的重叠. 代码: #include <iostream> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #i

一个Java线程小例子(仿火车票售卖)

public class MyThread extends Thread{ private static int ticket=100; public void run(){ for(int i=0;i<50;i++) if(ticket>0) System.out.println(Thread.currentThread().getName()+"正在卖第"+(ticket--)+"张票"); } //main函数是一个主线程 public stati

多线程 小例子

1. 线程小例子  /** * 失去一日甚易,欲得回已无途! * 2016-11-17下午1:43:51 * * 进程:可以包含一个或者多个线程! cpu上 真正 执行的 是 线程! * * 实现多线程的方法: * 01.继承Thread类 重写run() * 02.实现Runnable接口 重写run() * * 多线程:在单个程序中,同时运行多个线程来完成不同的工作! 多个线程 并发 执行的技术! * * 并发:在同一个时间段中 有几个程序 都处于 启动运行 到 运行完毕 之间! * 计算机

线程同步wait notify小例子

<strong>线程同步小例子:开启两个线程实现拿鸡蛋 放鸡蛋交叉进行</strong> </pre><pre code_snippet_id="574008" snippet_file_name="blog_20150107_1_8603573" name="code" class="java">public class Dofunction { private int num

简述人脸特异性识别&amp;&amp;一个基于LBP和SVM的人脸识别小例子

原谅我用图片,MAC在Safari里给文章进行图文排版太麻烦啦~ 本文适合初入计算机视觉和模式识别方向的同学们观看~ 文章写得匆忙,加上博主所知甚少,有不妥和勘误请指出并多多包涵. 本文Demo的代码由HZK编写,特征点由月神和YK选择和训练. 转载请注明 copyleft by sciencefans, 2014 为了方便大家学习,附上高维LBP的核心代码 1 ################################################### 2 # 3 # 4 # NO

用两个小例子来解释单例模式中的“双重锁定”

学习单例模式时,好多人都不太理解双重锁定.学完后突然想到一个很有趣的例子. 单例模式结构图: 代码: Singleton类 class Singleton { private static Singleton instance; private static readonly object syncRoot = new object(); //程序运行时创建一个静态只读的进程辅助对象 private Singleton() { } //用private修饰构造方法,防止外界利用new创建此类实例

java即时通信小例子

学习java一段时间了,今天写来一个即时通信的小例子练手在其过程中也学到了一些知识拿出来和大家分享,请路过的各位大神多多赐教... 好了下面讲一下基本的思路: 首先,编写服务器端的程序,简单点说吧就是在服务上开启一个线程循环等待客户端的连接,为每一个连接到服务器的Socket 创建一个实例存放在集合中,然后使用InputSteam读取从客户端发过来的数据然后转发给除自己之外的所有的客户端 然后是客户端,首先开启一个线程连接都服务器端,循环监听服务器发送回来的数据 这里要说一下为了明确是谁发出的消

python速成第二篇(小爬虫+文件操作+socket网络通信小例子+oop编程)

大家好,由于前天熬夜写完第一篇博客,然后昨天又是没休息好,昨天也就不想更新博客,就只是看了会资料就早点休息了,今天补上我这两天的所学,先记录一笔.我发现有时候我看的话会比较敷衍,而如果我写出来(无论写到笔记本中还是博客中,我都有不同的感觉)就会有不同的想法,我看书或者看资料有时候感觉就是有一种惰性,得过且过的感觉,有时候一个知识想不通道不明,想了一会儿,就会找借口给自己说这个知识不重要,不需要太纠结了,还是去看下一个吧,然后就如此往复下去,学习就会有漏洞,所以这更加坚定了我写博客来记录的想法.

c# BackGroundWorker 多线程操作的小例子

在我们的程序中,经常会有一些耗时较长的运算,为了保证用户体验,不引起界面不响应,我们一般会采用多线程操作,让耗时操作在后台完成,完成后再进行处理或给出提示,在运行中,也会时时去刷新界面上的进度条等显示元,必要进,还要控制后台线程中断当前操作. 以前,类似的应用会比较麻烦,需要写的代码较多,也很容易出现异常.在 .net中,提供了一个组件 backgroundworker就是专门解决这个问题的. 使用这个组件其实非常简单,例如,我们做一个类似如下界面的进度条的小例子,在后台线程中进行耗时运算,同时