zoukankan      html  css  js  c++  java
  • winform编程中的跨线程访问资源(转)

    最近我在做一个项目,遇到了跨线程要去访问页面控件.但是总是提示出错,不能在其它线程中修改创建控件的线程的控件的值,后来采用了匿名代理,结果很轻松地解决了.解决过程如下:
    首先在窗体上,创建一个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);           

            }       

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

    原文地址:http://www.cnblogs.com/wangqiideal/archive/2008/04/10/1106136.html

  • 相关阅读:
    删除文件目录的两种方式
    求两个整数的最大公约数?
    MemCache在Windows环境下的搭建及启动
    hello cnblogs
    Extjs gridPanel可复制配置(转)
    命令模式、状态模式、责任链模式区别(转)
    UML类图几种关系的总结(转)
    观察者模式(转)
    Java之建造者模式(Builder Pattern)(转)
    Java设计模式之工厂方法模式(转) 实现是抽象工厂?
  • 原文地址:https://www.cnblogs.com/Maculish/p/Mac_Essay.html
Copyright © 2011-2022 走看看