Winform 线程 委托 更新 WinForm界面

原创 2017年09月11日 14:52:48


using System;
using System.Threading;
using System.Windows.Forms;

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

        private bool refresh = true;
        private void button1_Click(object sender, EventArgs e)
        {
            int num = 0;
            
            //new Thread(delegate() //开线程刷新 .net 2.0写法
            new Thread( ()=> //开线程刷新 .net 3.5以上写法
            {
                if (refresh)
                {
                    refresh = !refresh;
                    UpdateButton(button1, "关闭刷新");
                }
                else
                {
                    refresh = !refresh;
                    UpdateButton(button1, "开始刷新");
                }
                
                while (!refresh) //用死循环刷新
                {
                    UpdateTextBox(textBox1, "刷新次数:" + num++);
                }
            }) {IsBackground = true}.Start();
        }


        delegate void RefreshDel();
        private void UpdateTextBox(TextBox sender, string content)
        {
            //new RefreshDel(delegate() //.net 2.0写法
            //{
                this.Invoke(new RefreshDel(delegate()
                {
                    sender.AppendText(content + Environment.NewLine); //TextBox的Text赋值
                }));
            //}).Invoke();
        }

        private void UpdateButton(Button sender, string content)
        {
            //new Action( ()=> //.net 3.5以上写法
            //{
                this.Invoke(new Action( ()=>
                {
                    sender.Text = content; //button的Text赋值
                }));
            //}).Invoke();
        }
    }
}


C# Winform 跨线程更新UI控件常用方法总结(转)

出处:http://www.tuicool.com/articles/FNzURb 概述 C#Winform编程中,跨线程直接更新UI控件的做法是不正确的,会时常出现“线程间操作无效: 从不是创建...
  • dragoo1
  • dragoo1
  • 2017年02月10日 12:35
  • 2417

C# 委托 回调 操作UI主线程 学习笔记

本篇相当于是对前面两篇博的一个简单总结,相当于为c#开发桌面程序有了一个多线程的应用方案。涉及了委托传参,回调委托,跨线程等。下面先直接上代码: 这段代码实现了,点Start按钮,开始更新进度条,当...
  • baidu_31981559
  • baidu_31981559
  • 2016年05月27日 17:09
  • 2948

C# 通过委托控制进度条以及多线程更新控件

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin...
  • smartsmile2012
  • smartsmile2012
  • 2014年07月09日 14:19
  • 9997

C# winform 防止界面卡住 线程 委托

  • 2015年04月20日 09:39
  • 49KB
  • 下载

C# winform 防止界面卡住 线程 委托

1. 新建WindowsApplication,拖textBox、button、richTextBox控件。 2.代码如下: using System; using System.Col...
  • yinyongxian
  • yinyongxian
  • 2015年04月20日 09:32
  • 462

C#-WinForm跨线程修改UI界面的实例

  • 2017年11月14日 18:04
  • 47KB
  • 下载

解决winform编程中使用线程界面卡死的案例

  • 2015年04月10日 17:52
  • 72KB
  • 下载

委托+线程 winform下超简单实时进度条控件的实现

由于一直以来都是在做ASP.NET 对于多线程这一块涉猎不深 觉得趁着入职之前好好练习一下多线程编程 多线程最简单直观的例子估计就是进度条了 同时由于还涉及到UI线程 更加可以了解一下winform编...
  • xboxeer
  • xboxeer
  • 2012年06月29日 21:59
  • 3743

Winform 使用委托线程修改控件属性.显示时间示例

class GClock:Form { #region 跨线程更新UI控件 private delegate void UpdataTextDelegate(L...
  • beyonddeg
  • beyonddeg
  • 2014年12月30日 02:04
  • 447

Winform跨线程打印日志到TextBox(使用委托跨线程访问控件)

class Test { public delegate void ThreadStartDelegate(System.Windows.Forms.RichTextBox r...
  • CGS_______
  • CGS_______
  • 2017年02月23日 09:58
  • 960
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Winform 线程 委托 更新 WinForm界面
举报原因:
原因补充:

(最多只允许输入30个字)