首页 > 其他分享 >线程暂停

线程暂停

时间:2023-04-27 23:12:28浏览次数:29  
标签:Text Form1 button1 线程 ManualResetEvent 暂停 OnOff

代码:

namespace ThreadPause
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        ManualResetEvent OnOff = new ManualResetEvent(true);
        private void Form1_Load(object sender, EventArgs e)
        {
            OnOff.Reset();
            Task.Run(() =>
            {
                while (progressBar1.Value < 100)
                {
                    OnOff.WaitOne();
                    Thread.Sleep(100);
                    Invoke(new Action(() =>
                    {
                        progressBar1.Value++;
                    }));
                }
            });
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (button1.Text == "暂停")
            {
                OnOff.Reset();
                button1.Text = "开始";
            }
            else
            {
                OnOff.Set();
                button1.Text = "暂停";
            }
        }
    }
}

标签:Text,Form1,button1,线程,ManualResetEvent,暂停,OnOff
From: https://www.cnblogs.com/zzzyt/p/17360494.html

相关文章

  • 进程和线程
    多线程的内容很重要;为了面试,时间不充裕就背,学习最重要没必要求大求全,把握核心和重点就OK;效率最高时间充裕除了背,需要慢慢自己做实现去理解;从大厂的一则招聘谈起:Java基础扎实,熟悉JVM、多线程、集合等基础,熟悉分布式、缓存、消息、搜索等机制三年以上Java开发经验,熟悉Spring......
  • 子线程启动tkinter并完美退出
    importsysfromtkinterimport*fromPILimportImage,ImageTkfromthreadingimportThreaddefui():myPic=Nonedefopenimg():globalmyPicimg=Image.open("img.png")myPic=ImageTk.PhotoImage(img)......
  • [Unity]AssetBundle资源更新以及多线程下载
    前言此文章适合不太了解资源加载的萌新,有了入门基础之后再去github上搜大牛写的专业的资源加载方案才能得心应手,不然的话会看的很吃力或者说一脸懵逼。Unity里面关于资源加载我们都知道是下载更新AssetBundle,关于AssetBundle我之前的文章已经详细介绍过,没看过的朋友可以在看一下。......
  • C# WinForm线程里操作控件
    做winform程序,避免不了的要在线程里控制窗体上的控件,直接在子线程里操作控件会报错“线程间操作无效,从不是创建控件***的线程访问它”。解决方法:privatevoidForm1_Load(objectsender,EventArgse){Threadt1=newThread(t1_clock);t1.IsBackground=true;......
  • 练习——简单的线程练习
    packagecom.thread_;importjava.util.Scanner;/*在main方法中启动两个线程第1个线程循环随机打印100以内的整数直到第2个线程从键盘读取了“Q”命令。*/publicclassThreadExercise{publicstaticvoidmain(String[]args){Aa=newA();......
  • java线程之Semaphore
    Semaphore是信号量,用于线程间同步。例子,公交车上大概有24个座位,但是车上总共有40个人,那么,只要有一个人下车,另一个人就能得到一个座位,假设到终点站之前,每个人都能坐下。代码如下:packagecom.concurrent;importjava.util.Random;importjava.util.concurrent.CountDownLatch;imp......
  • java线程之FutureTask
    FutureTask是线程的异步计算。如果有多个线程,每个线程都要花很多时间计算,而且所花时间不同,最后要统计,就要用到此类。此类有个done方法,等call完后,执行此方法。代码:packagecom.concurrent;importjava.util.ArrayList;importjava.util.List;importjava.util.Random;importja......
  • java线程之wait、notifyAll
    wait、notifyAll是线程之间用来通信的,设计模式里的观察者模式。例子,上课前,同学在玩,一个同学观察老师是不是来了,如果来了,叫其他同学坐好。packagecom.concurrent;importjava.util.HashSet;importjava.util.Set;importjava.util.concurrent.CountDownLatch;importjava.util......
  • java 多线程 synchronized
    程序1:packagetestsynchronized;publicclassThread1implementsRunnable{ @Override publicvoidrun(){ synchronized(this){ for(inti=0;i<10;i++){ System.out.println(Thread.currentThread().getName() +"synchronizedloo......
  • java 多线程的start()和run()的理解
    run()方法中是各个线程要执行的具体内容。所以当一个线程直接调用run()时那么直接开始执行方法体,这是在main线程中的多个线程只能时按照顺序的等待前面的线程结束run()方法的执行。而调用start方法只是线程进入准备阶段(Ready),并没有真正执行,这需要JVM进行分配时间片进行轮转线程执......