Java多线程 界面卡死_WinForm多线程+委托防止界面卡死-程序员宅基地

技术标签: Java多线程 界面卡死  

1、当有大量数据需要计算、显示在界面或者调用sleep函数时,容易导致界面卡死,可以采用多线程加委托的方法解决

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.IO;

using System.Diagnostics;

using System.Runtime.InteropServices;

using System.Threading;

namespace WindowsFormTest{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

Control.CheckForIllegalCrossThreadCalls = false;

}

Thread drawThread = null;

delegate void drawDelegate(int i);

//开启子线程

private void btnTest_Click(object sender, EventArgs e)

{

closeThread();

drawThread = new Thread(new ThreadStart(draw));

drawThread.IsBackground = true;

drawThread.Start();

}

//draw子线程,循环调用test函数,并且等待一会

private void draw()

{

try

{

for (int i = 0; i < 100000000; i++)

{

test(i);

Thread.Sleep(100);

}

}

catch (System.Exception e1)

{

return;

}

closeThread();

}

//test函数,向textBox中添加数据

private void test(int i)

{

if (textBox1.InvokeRequired)

{

drawDelegate d = new drawDelegate(test);

Invoke(d, new object[] {i });

}

else

{

textBox1.AppendText(i.ToString()+"\r\n");

}

}

//结束子线程

private void closeThread()

{

if (drawThread != null)

{

if (drawThread.IsAlive)

{

drawThread.Abort();

}

}

}

//窗体关闭时,关闭子线程

private void Form1_FormClosing(object sender, FormClosingEventArgs e)

{

closeThread();

}

}

}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_29058331/article/details/114825131

智能推荐

LeetCode232.用栈实现队列(Java实现)_java 用栈实现队列-程序员宅基地

文章浏览阅读266次。链接:https://leetcode-cn.com/problems/implement-queue-using-stacks/class MyQueue { private Stack<Integer> stackA; private Stack<Integer> stackB; /** Initialize your data structure..._java 用栈实现队列

面向视频编解码后处理的深度学习方法进展_神经网络 后处理视频 字节-程序员宅基地

文章浏览阅读1.8k次,点赞3次,收藏5次。1 背景介绍视频以及图像的有损压缩算法会造成较为严重的失真以及效应,比如,基于块的编码策略将会引起块效应;高频分量的缺失会造成压缩后的图像会更加模糊,还有振铃效应,颜色偏移等等。特别是在编码是在较差的编码配置下(低比特率)尤为明显。这些效应会严重降低用户体验,所以如何去除这些效应或者削弱这些效应的影响也就成为一个重要的问题。在新一代视频编码标准HEVC(High Efficiency Video Coding)中,采用两种环路滤波的方案来削弱这些效应:去块滤波器以及SAO(样点自适应补偿)。从名字上_神经网络 后处理视频 字节

php购物车程序,PHP购物车程序设计-程序员宅基地

文章浏览阅读244次。简明现代魔法 -> PHP服务器脚本 -> PHP购物车程序设计PHP购物车程序设计2010-06-06在这个程序中,创建了两个类,一个是通用的Product类,它封装了一个产品和产品的属性,另一个是购物车的Cart类。Product类(Product.php)商品类有三个属性,分别是编号、描述和价格。class Product{protected $_partNumber, $_de..._思考:购物车如何存放物品的设计 对于购物车程序 1. 你会使用数组还是集合框架

Redis_16_之LRU算法_lru和近似lru-程序员宅基地

文章浏览阅读211次。文章目录Redis之LRU算法1. 缓存清理设置2. 缓存清理流程3. Redis的LRU近似算法Redis之LRU算法LRU:Least Recently Used,最近最少使用算法1. 缓存清理设置redis.confmaxmemory,设置redis用来存放数据的最大的内存大小,一旦超出这个内存大小之后,就会立即使用LRU算法清理掉部分数据如果用LRU,那么就是将最近最少使用的..._lru和近似lru

Android EditText 并排对齐_androidstudio如何让文字和输入框一排-程序员宅基地

文章浏览阅读1.1k次。设置LinearLayout orientation属性为horizontal 设置EditText width属性为=wrap_contentgravity为="left|center_vertical"代码:android:layout_width="fill_parent"android:layout_height="wrap_content"android:_androidstudio如何让文字和输入框一排

【操作随记】Markdown表格不生效不生效_markdown表格语法不生效原因-程序员宅基地

文章浏览阅读5.2k次,点赞5次,收藏2次。在之前写github项目中的README的时候,想要添加表格,根据语法编辑发现表格不生效。如:# 一、数据库试题现有学生、课程、成绩、教师四张表。包含以下信息: 1.学生表(STUDENT) | 字段名 | 注释 | | ------ | ----- | | S_NO | 学号 | 经修改后生效,原因是:表格的语句上一行必须为空行,不然表格不生效。正确演示:# 一、数据库试题现有学生、课程、成绩、教师四张表。包含以下信息: 1.学生表(STUDENT)_markdown表格语法不生效原因

随便推点

Bug中的中的小问题编程需要注意-程序员宅基地

文章浏览阅读43次。Bug中的中的小问题编程需要注意1. 关于局部变量与全局变量是否同名问题  如果参数传递的是一个数组,且全局变量与参数数据同名,则局部变量作用域中,这两个同名的数据可能会引起冲突。   如下:如果一开始是同名的数组名,在使用这个函数时,函数能够传递来,但是在数组之间复制失败????  改变形参名,后正常!!!    小结:  形参命名为: p_Name   全局变量...

LeetCode经典题目详细解析(持续更新!)_leetcode经典题目全解析-程序员宅基地

文章浏览阅读3.5k次。笔者中山大学研究生,医学生+计科学生的集合体,机器学习爱好者。刷了挺久的LeetCode,有些题目的知识点重复出现,因此分享LeetCode部分经典题目的详细解析。贴图要一张一张贴太麻烦了,直接给出各个精选知识点的知乎链接。持续更新!1、LeetCode 14 Longest Common Prefix——多级指针..._leetcode经典题目全解析

C++ 常用设计模式_deque(); void push_front(int value); void push_bac-程序员宅基地

文章浏览阅读142次。转载地址:https://www.cnblogs.com/chengjundu/p/8473564.html1、工厂模式:简单工厂模式、工厂方法模式、抽象工厂模式  1)、简单工厂模式:主要特点是需要在工厂类中做判断,从而创造相应的产品,当增加新产品时,需要修改工厂类。typedef enum{ T80 = 1, T99}TankType;class Tank..._deque(); void push_front(int value); void push_back(int value);

SRP批处理器-程序员宅基地

文章浏览阅读684次。SRP批处理器SRP Batcher(SRP批处理器)是一个渲染循环,它可以加速CPU在场景中的渲染,同时场景可以有很多使用同一shader的材质使用SRP批处理器要使用SRP批处理器,你的工程中必须使用Scriptable Render Pipeline.当然,也可以是下列之一:通用渲染管线(URP)高清晰渲染管线(HDRP). 自定义渲染管线在URP中激活激活SRP批处理器:1.在Project窗口,选择URP资源2.在该资源的Inspector面板中,找到Advanced栏,然_srp批处理

win10蓝牙开关选项突然没了解决方法_win10蓝牙开启选项没了-程序员宅基地

文章浏览阅读3.4k次。win10蓝牙开关选项突然没了解决方法问题:我是正常用电脑,然后用连蓝牙耳机的时候突然声音有异常,想去关闭蓝牙和重启蓝牙后发现蓝牙不可用了。网上找了很多方法都不能解决,很是烦恼。解决方法:关闭电脑,拔掉插头,等电脑电量耗完(可以在睡觉的时候拔掉),第二天重新开电脑蓝牙选项就回来啦,本人问题就这样解决了..._win10蓝牙开启选项没了

Python环境搭建-程序员宅基地

文章浏览阅读783次。1. Windows开发环境搭建1.1 下载地址 Anaconda官网,点击左侧链接,拉到最下方,根据自己操作系统的位数选择对应的64位或者32位操作系统下载即可。1.2 环境配置 conda默认采用的是官方的镜像,速度较慢。需要修改为清华的镜像。 #增加清华的镜像仓库conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/f..._python环境搭建