线程的一些感悟

背景:通过一个辅助线程计算出的一个值赋给textBox1.text;

1.

当点击一个button事件 去触发一个while(1)的循环事件时,如果不用线程去操作 界面就会卡死

解决方法:需要加入线程。

2

然后发现在线程中去操作一个控件的显示(比如 textBox1.text=“”;)时会产生如下error:线程间操作无效: 从不是创建控件“textBox1”的线程访问它。

解决方法:1直接在窗体的构造函数中加:System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false; 此时把所有的控件合法性线程检查全部都给禁止掉了。但是发现效果不是非常好。关闭exe时反应有点慢。

2通过代理委托解决private delegate void SetTextCallback(string text);
//在给textBox1.text赋值的地方调用以下方法即可
private void SetText(string text)
{
    // InvokeRequired需要比较调用线程ID和创建线程ID
    // 如果它们不相同则返回true
    if (this.textBox1.InvokeRequired)
    {
        SetTextCallback d = new SetTextCallback(SetText);
        this.Invoke(d, new object[] { text });   //当参数类型和个数都不确定的情况下,用object数组可以解决这个问题。
    }
    else
    {
        this.textBox1.Text = text;
    }
}

通过委托的方法效果好。

3

关闭调试程序时,报错:在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。

解决方法:    加上Sgather.IsBackground = true;Sgather是点击事件时的线程。

线程的一些感悟,布布扣,bubuko.com

时间: 2024-10-27 07:33:31

线程的一些感悟的相关文章

初识作业、进程、线程,及感悟

1.作业    程序的实质:为完成任务,有限步骤的集合.在windows中运行时,会将程序分成计算机要操作的集合,即向计算机提交任务的实体.作业的完成需要经过四个过程:作业的提交,作业的收容,作业的执行和作业的完成.         2.进程 一个作业的完成,可能会对应多个相应的进程.进程,既是为完成作业,系统请求资源的基本单位.因此,当电脑内存不够用时,可以关掉不需要的进程,以节省电脑资源.进程,即一个过程,程序的一个数据集运行的过程.进程有自己的虚拟地址空间,包括文本区域(text regi

20155236 《信息安全系统设计基础》第13周学习总结

20155236 <信息安全系统设计基础>第13周学习总结 网络编程 套接字接口概述: 并发编程 并发:逻辑控制流在时间上重叠 并发程序:使用应用级并发的应用程序称为并发程序. 三种基本的构造并发程序的方法: 进程,用内核来调用和维护,有独立的虚拟地址空间,显式的进程间通信机制. I/O多路复用,应用程序在一个进程的上下文中显式的调度控制流.逻辑流被模型化为状态机. 线程,运行在一个单一进程上下文中的逻辑流.由内核进行调度,共享同一个虚拟地址空间. 基于进程的并发编程 构造并发程序最简单的方法

各科基础详实

一. Java基础部分 1. JAVA的基本数据类型有哪些 ?  String 是不是基本数据类型 ? 2. 一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 3. Java有没有goto? 7 4. 说说&和&&的区别. 7 5. 在JAVA中如何跳出当前的多重嵌套循环? 7 6. switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 8 7. short s1 = 1; s1 = s1 + 1;有什么

python 进程、线程、协程感悟

进程: 感觉只是使用Process模块加以使用即可: # -*- coding: utf-8 -*- # data:2019-02-23 21:23 # user:DIY # file:thread_master.py from socket import * from multiprocessing import Process from time import sleep def dealWithClient(newSocket,destAddr): while True: recvData

程序员突围-程序调试分析(一) 我从菜鸟进化的感悟

程序员突围-程序调试分析(一) 我从菜鸟进化的感悟 在说程序调试分析之前,我们还是了解一些基本的概念性的东西(在下现在从事java,因而都已java为例) 1. bug的分类 根据程序的阶段和MSDN和看过的一些书籍的分析,bug分为编译错误,运行时错误和逻辑的错误 (1)  编译错误 一般初学者犯错比较多的地方,编译错误,说白了就是程序在从java编译成.class文件时出现了问题,这个问题的现象比较明显,比如说语句写的有问题,那么对于这类问题的解决方法是什么呢,翻翻书,翻翻API(翻阅API

Java多线程感悟二

写在前面 这篇是Java多线程感悟的第二篇博客,主要讲述的JAVA层面对并发的一些支持.第一篇博客地址为:http://zhangfengzhe.blog.51cto.com/8855103/1607712  下一篇博客将介绍线程池和一些同步工具类. 目录 9.  并发内存模型及并发问题概述 10. volatile和synchronized原理分析 11. ThreadLocal原理及其在Struts/Spring中的应用 12. Atomic 13. Lock 并发内存模型及并发问题概述 首

NLog类库的使用探索(一)+实习小感悟

1 写在前面 1.1 为什么学了软件 1.高考失败,分数不高,不能随心所欲 2.农村孩子,学点技术,将来有口饭吃 3.有科技含量,想玩电脑(那个时候是这么想的,那个时候觉得学计算机就是玩电脑) 1.2 为什么选了C# 1.大一大二学了c,C++,大三分方向NET和JAVA,觉得C,C++,C#看着好看,读者顺,就选了. 2.大多数学习好点的学了JAVA,不想跟风选了C# 1.3  选择决定命运 本科时候winform,asp.net,WindowsPhone各学了半年,学的最好的还算是WP,只能

找工作感悟————秦卫卫(2014秋)

找工作感悟 秦卫卫 八月份仿真实验室国赛以后,我并没有开始做一些关于找工作的准备,而是在做自己感兴趣的cocos2d-x,大概花了一个星期的时间从安装平台到查资料写了一个flappybird小游戏,将近开学了才把找工作的事情摆到台面上来,于是继续看算法,在leetcode(这是一个神奇的网站,找工作上面的题一定要刷)上面刷题,开始的时候很费劲,后来逐渐找到了感觉,转眼开学了.阿里巴巴的面试大概在10天以后,但是我们还要做可恶的课程设计,而且我们组又没人做,于是我在实验室熬了3天把它做完了,于是开

Python之线程与GIL

前言            以下内容是个人学习之后的感悟,转载请注明出处~ 线程是什么 线程是程序中一个单一的顺序控制流程.进程内一个相对独立的.可调度的执行单元,是系统独立调度和分派CPU的 基本单位指运行中的程序的调度单位.在单个程序中同时运行多个线程完成不同的工作,称为多线程. GIL是什么 为了更有效的利用多核处理器的性能,就出现了多线程的编程方式,Python当然也逃不开,为了利用多核,Python开 始支持多线程.而解决多线程之间数据完整性和状态同步的最简单方法自然就是加锁. 于是有