最近我在做一个项目,遇到了跨线程要去访问页面控件.但是总是提示出错,不能在其它线程中修改创建控件的线程的控件的值,后来采用了匿名代理,结果很轻松地解决了.解决过程如下:
首先在窗体上,创建一个listbox,lable.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;

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

private void Form1_Load(object sender, EventArgs e)
        {  
            Thread newthread = new Thread(new ThreadStart(BackgroundProcess));
            newthread.Start();

}

/// <summary>
        /// 定义一个代理
        /// </summary>
        private delegate void CrossThreadOperationControl();

private void BackgroundProcess()
        {
            // 将代理实例化为一个匿名代理
            CrossThreadOperationControl CrossDelete = delegate()         
            {           
                int i = 1;
                while (i<5)
                {
                   // 向列表框增加一个项目
                    listBox1.Items.Add("Item " + i.ToString());                   
                    i++;
                }
                label1.Text = "我在新线程里访问这个lable!";
                listBox1.Items.Add(label1.Text);
            }  ;
            listBox1.Invoke(CrossDelete);           
        }

}
}
希望这个小技巧能够对你的的学习和工作有所帮助.若有更好的办法来解决跨线程访问控件的问题,不防也拿出来大家分享一下.

转载于:https://www.cnblogs.com/wangqiideal/archive/2008/04/10/1106136.html

VS2005中,C#中跨线程访问控件问题解决方案相关推荐

  1. C#中跨线程访问控件问题解决方案

    net 原则上禁止跨线程访问控件,因为这样可能造成错误的发生,推荐的解决方法是采用代理,用代理方法来间接操作不是同一线程创建的控件. 第二种方法是禁止编译器对跨线程访问作检查,可以实现访问,但是出不出 ...

  2. 跨线程操作无效:从创建该线程的线程以外的线程访问控件

    我有一个场景. (Windows窗体,C#.. NET) 有一个主窗体可以承载一些用户控件. 用户控件执行一些繁重的数据操作,因此,如果我直接调用UserControl_Load方法,则UI在加载方法 ...

  3. c#使用MethodInvoker解决跨线程访问控件

    c#使用MethodInvoker解决跨线程访问控件 .net 原则上禁止跨线程访问控件,因为这样可能造成错误的发生,有一种方法是禁止编译器对跨线程访问作检查,Control.CheckForIlle ...

  4. c# winform InvokeRequired 解决跨线程访问控件

    C#中禁止跨线程直接访问控件,InvokeRequired是为了解决这个问题而产生的,当一个控件的InvokeRequired属性值为真时,说明有一个创建它以外的线程想访问它. Windows 窗体中 ...

  5. java 线程访问控件_多线程下访问控件的方式

    前言 在很多情况下,我们都会使用到多线程,在使用多线程的时候,我们很多时候又会去访问控件,这里面就会出现很多问题!!!我以一个最常见的,我们经常会用到的例子来讲讲,在提高自己水平的同时,希望能给大家带 ...

  6. C#中跨线程操作控件

    From:http://tech.ddvip.com/2008-12/122906068099474.html 一.前面的话 对于一些耗时型操作(如文件下载),让主线程去处理不是明智的选择,虽然这样做 ...

  7. 在.Net中进行跨线程的控件操作(上篇:Control.Invoke)

    本文的重点在于介绍如何在多线程编程中,从非UI线程上访问界面中的控件.有过多线程编程经验的人都知道,当我们在非UI线程上试图给一个界面中的控件赋值的时候,比如说label的Text属性,系统会抛出一个 ...

  8. java 线程访问控件_C#多线程与跨线程访问界面控件的方法

    本文实例讲述了C#多线程与跨线程访问界面控件的方法.分享给大家供大家参考.具体分析如下: 在编写WinForm访问WebService时,常会遇到因为网络延迟造成界面卡死的现象.启用新线程去访问Web ...

  9. winform使用多线程时跨线程访问控件

    之前写winform用多线程,在子线程里访问窗体控件需要用委托,由于委托使用不熟练,在网上找的各种方法都觉得太复杂看不懂,后来发现一种写法如下: if (pictureBox1.InvokeRequi ...

最新文章

  1. 基于px2rpx-loader,探讨一下loader的封装思想
  2. C#游戏开发快速入门 2.1 构建游戏场景
  3. Linux内核Socket参数调优
  4. 两次结果的绝对差值_你知道电子天平的检定和检定结果的影响因素有哪些吗?...
  5. linux的nice命令用法,nice命令详解
  6. c语言密码强度的判断程序,C语言实现密码强度检测
  7. 为什么8位二进制的取值范围是-128~127
  8. “性能监视器”监视系统性能的基本设置
  9. linux 编译链接出错,Qt编译和链接错误
  10. matlab波形反白,基于MATLAB的海岸污染物浓度扩散实验分析
  11. 字典工具类 DictUtils 源码及分析
  12. 冰点还原精灵图标不见了怎么办?
  13. python爬虫+selenium模拟点击+网页内容需要点击打开
  14. 2018招行笔试分红包
  15. 向来有些神秘的ThoughtWorks,突然之间要被Roy卖掉的原因竟然是……
  16. excel编辑csv文件
  17. GitHub热门项目 | PyTorch 资源大全,7400多星
  18. SVG/CSS路径动画
  19. 考研基础线性代数笔记
  20. 基于SSM+MySQL+JSP+Shiro的快递物流信息管理系统

热门文章

  1. 联想利泰的一道做出来就给月薪7K的面试题--交通灯管理系统
  2. 简述使用ftp进行文件传输时的两种登录方式?它们的区别是什么?常用的ftp文件传输命令是什么?
  3. bug修复录-qq浏览器中post请求时body为空
  4. Hexo+OSChina(码云)+git 搭建个人博客
  5. Windows azure国际版下通过 windows auzre powershell为VM分配绑定virtual ip address
  6. 【Hadoop】HDFS客户端开发示例
  7. 企业搜索引擎开发之连接器connector(二十九)
  8. String byte[] stream File之间的相互转换
  9. 直接定址表03 - 零基础入门学习汇编语言74
  10. 各种花里胡哨的管理系统介绍