c#解决窗体假死的一种方法

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            CheckForIllegalCrossThreadCalls = false;
            this.label1.Text = "aaaaa";

            Thread tr = new Thread(testc);
            tr.Start();
        }

        private void testc()
        {
            for (int i = 0; i < 10; i++)
            {
                Thread.Sleep(10000);
                MessageBox.Show("a");
            }
        }
    }
时间: 2024-08-28 14:40:02

c#解决窗体假死的一种方法的相关文章

谈.Net委托与线程——解决窗体假死

引言 在之前的<创建无阻塞的异步调用>中,已经介绍过异步调用的编写步骤和实施原理.异步调用是CLR为开发者提供的一种重要的编程手段,它也是构建高性能.可伸缩应用程序的关键.在多核CPU越来越普及的今天,异步编程允许使用非常少的线程执行很多操作.我们通常使用异步完成许多计算型.IO型的复杂.耗时操作,去取得我们的应用程序运行所需要的一部分数据.在取得这些数据后,我们需要将它们绑定在UI中呈现.当数据量偏大时,我们会发现窗体变成了空白面板.此时如果用鼠标点击,窗体标题将会出现"失去响应&

C# 解决窗体假死的状态

异步调用是CLR为开发者提供的一种重要的编程手段,它也是构建高性能.可伸缩应用程序的关键.在多核CPU越来越普及的今天,异步编程允许使用非常少的线程执行很多操作.我们通常使用异步完成许多计算型.IO型的复杂.耗时操作,去取得我们的应用程序运行所需要的一部分数据.在取得这些数据后,我们需要将它们绑定在UI中呈现.当数据量偏大时,我们会发现窗体变成了空白面板.此时如果用鼠标点击,窗体标题将会出现”失去响应”的字样,而实际上UI线程仍在工作着,这对用户来说是一种极度糟糕的体验.如果你希望了解其中的原因

C# 委托 线程 窗体假死

转载:http://www.cnblogs.com/smartls/archive/2011/04/08/2008981.html 异步调用是CLR为开发者提供的一种重要的编程手段,它也是构建高性能.可伸缩应用程序的关键.在多核CPU越来越普及的今天,异步编程允许使用非常少的线程执行很多操作.我们通常使用异步完成许多计算型.IO型的复杂.耗时操作,去取得我们的应用程序运行所需要的一部分数据.在取得这些数据后,我们需要将它们绑定在UI中呈现.当数据量偏大时,我们会发现窗体变成了空白面板.此时如果用

C# winform窗体假死

C#  winform窗体假死 我们经常会遇到当执行一个比较大的函数时,窗体会出现假死的现象,给用户的体验不是很好,于是我们遇到了问题,那么就必须解决,我们该如何解决呢,首先在自己的脑里画个问号,接下来我们就一起研究吧! 先分析,这个问题是如何出现的呢!为什么会出现,如何避免出现,避免不了的,如何解决等,下面我们就去解决问题吧,遇到问题不要怕,解决问题是我们成长最快的时候,曾经别人告诉我,不怕不会做,就怕想不到.那我们就进入正题吧! 窗体假死是如何出现的呢? 在调用    testc();函数时

winform 利用 多线程 处理窗体假死,利用 Invoke BeginInvoke 处理子线程调用 UI 控件报错的问题

因为工作需要自己写了一个简单的工具软件,数据库查询每日OA未发送成功流程的日志记录以及批量重处理操作. 开始使用的是单线程,后台查询数据库的时候窗体假死,使用多线程很简单就能解决. private void btnQuey_Click(object sender, EventArgs e) { this.button2.Enabled = false; Thread connectionThread = new Thread(new ThreadStart(connectDB)); connec

Linux # Kubuntu 假死,结束进程方法

分析思路: 要知道运行了哪些进程,结束的目标进程是哪些,如何得到运行中的进程,需要哪些操作. 借助搜索引擎,搜索关键字:kconsole 列出进程,查询相关信息,文后参考链接 执行过程: ps aux 列出运行进程 (记录结束的目标进程的 pid,比如 firefox pid 为 22481) 或者 grep firefox ,将显示 22481,即为 pid 接着 kill 22481 ,即可. 备注: 这些命令详细介绍可以看下面链接 参考: Win/Mac/Linux(gnome|kde)

VBS中解决路径带空格的三种方法

vbs中,如果需要运行的程序中带有空格,按照通常的方式往往会提示错误,其实有两种形式不同的解决方法: 在应用程序前后分别加三个双引号,代码如下: [c-sharp] view plaincopyprint? Set wshell=CreateObject("WScript.Shell") wshell.Run  """C:/Program Files/360/360se/360se.exe""",5,True Set wshe

【Cocos2d-x游戏开发】解决Cocos2d-x中文乱码的三种方法

众所周知,Cocos2d-x是一款不错的开源引擎,但是在Cocos2d-x中直接使用中文是无法正确显示的.比如下面的情况: 解决这个问题常用的有三种方法:1.通过转换为UTF-8编码来显示.2.使用iconv库来解决.3.使用解析xml或者json文件来解决.这里推荐使用第三种方法来解决,因为比较简单方便,还能支持I18N国际化.下面我们来一一详细了解一下每种解决方案的具体实现: 一.通过转换为UTF-8编码的方式显示出来,建立一个方法用于转换中文到对应的UTF-8编码,具体代码如下: 1 ch

Java窗体居中显示的2种方法

第1种方法: //setSize(300, 200); pack(); // 得到显示器屏幕的宽.高 int width = Toolkit.getDefaultToolkit().getScreenSize().width; int height = Toolkit.getDefaultToolkit().getScreenSize().height; // 得到窗体的宽.高 int windowsWidth = this.getWidth(); int windowsHeight = thi