VS2005中,C#中跨线程访问控件问题解决方案
最近我在做一个项目,遇到了跨线程要去访问页面控件.但是总是提示出错,不能在其它线程中修改创建控件的线程的控件的值,后来采用了匿名代理,结果很轻松地解决了.解决过程如下:
首先在窗体上,创建一个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#中跨线程访问控件问题解决方案相关推荐
- C#中跨线程访问控件问题解决方案
net 原则上禁止跨线程访问控件,因为这样可能造成错误的发生,推荐的解决方法是采用代理,用代理方法来间接操作不是同一线程创建的控件. 第二种方法是禁止编译器对跨线程访问作检查,可以实现访问,但是出不出 ...
- 跨线程操作无效:从创建该线程的线程以外的线程访问控件
我有一个场景. (Windows窗体,C#.. NET) 有一个主窗体可以承载一些用户控件. 用户控件执行一些繁重的数据操作,因此,如果我直接调用UserControl_Load方法,则UI在加载方法 ...
- c#使用MethodInvoker解决跨线程访问控件
c#使用MethodInvoker解决跨线程访问控件 .net 原则上禁止跨线程访问控件,因为这样可能造成错误的发生,有一种方法是禁止编译器对跨线程访问作检查,Control.CheckForIlle ...
- c# winform InvokeRequired 解决跨线程访问控件
C#中禁止跨线程直接访问控件,InvokeRequired是为了解决这个问题而产生的,当一个控件的InvokeRequired属性值为真时,说明有一个创建它以外的线程想访问它. Windows 窗体中 ...
- java 线程访问控件_多线程下访问控件的方式
前言 在很多情况下,我们都会使用到多线程,在使用多线程的时候,我们很多时候又会去访问控件,这里面就会出现很多问题!!!我以一个最常见的,我们经常会用到的例子来讲讲,在提高自己水平的同时,希望能给大家带 ...
- C#中跨线程操作控件
From:http://tech.ddvip.com/2008-12/122906068099474.html 一.前面的话 对于一些耗时型操作(如文件下载),让主线程去处理不是明智的选择,虽然这样做 ...
- 在.Net中进行跨线程的控件操作(上篇:Control.Invoke)
本文的重点在于介绍如何在多线程编程中,从非UI线程上访问界面中的控件.有过多线程编程经验的人都知道,当我们在非UI线程上试图给一个界面中的控件赋值的时候,比如说label的Text属性,系统会抛出一个 ...
- java 线程访问控件_C#多线程与跨线程访问界面控件的方法
本文实例讲述了C#多线程与跨线程访问界面控件的方法.分享给大家供大家参考.具体分析如下: 在编写WinForm访问WebService时,常会遇到因为网络延迟造成界面卡死的现象.启用新线程去访问Web ...
- winform使用多线程时跨线程访问控件
之前写winform用多线程,在子线程里访问窗体控件需要用委托,由于委托使用不熟练,在网上找的各种方法都觉得太复杂看不懂,后来发现一种写法如下: if (pictureBox1.InvokeRequi ...
最新文章
- 基于px2rpx-loader,探讨一下loader的封装思想
- C#游戏开发快速入门 2.1 构建游戏场景
- Linux内核Socket参数调优
- 两次结果的绝对差值_你知道电子天平的检定和检定结果的影响因素有哪些吗?...
- linux的nice命令用法,nice命令详解
- c语言密码强度的判断程序,C语言实现密码强度检测
- 为什么8位二进制的取值范围是-128~127
- “性能监视器”监视系统性能的基本设置
- linux 编译链接出错,Qt编译和链接错误
- matlab波形反白,基于MATLAB的海岸污染物浓度扩散实验分析
- 字典工具类 DictUtils 源码及分析
- 冰点还原精灵图标不见了怎么办?
- python爬虫+selenium模拟点击+网页内容需要点击打开
- 2018招行笔试分红包
- 向来有些神秘的ThoughtWorks,突然之间要被Roy卖掉的原因竟然是……
- excel编辑csv文件
- GitHub热门项目 | PyTorch 资源大全,7400多星
- SVG/CSS路径动画
- 考研基础线性代数笔记
- 基于SSM+MySQL+JSP+Shiro的快递物流信息管理系统
热门文章
- 联想利泰的一道做出来就给月薪7K的面试题--交通灯管理系统
- 简述使用ftp进行文件传输时的两种登录方式?它们的区别是什么?常用的ftp文件传输命令是什么?
- bug修复录-qq浏览器中post请求时body为空
- Hexo+OSChina(码云)+git 搭建个人博客
- Windows azure国际版下通过 windows auzre powershell为VM分配绑定virtual ip address
- 【Hadoop】HDFS客户端开发示例
- 企业搜索引擎开发之连接器connector(二十九)
- String byte[] stream File之间的相互转换
- 直接定址表03 - 零基础入门学习汇编语言74
- 各种花里胡哨的管理系统介绍