• 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

  • 相关阅读:
    scp 指定端口(转)
    openshift 入门 部署 openshift-origin-server-v3.7.0
    kubernetes 网络模型
    故障排除--kubernetes 运维操作步骤 -- kubedns -- busybox -- nslookup 问题
    Service 服务发现的两种方式-通过案例来理解+服务外部访问类型+selector-label
    nmap 扫描端口 + iftop 实时监控流量
    Intellij IDEA 2016.3.4 注册激活--转
    laravel服务提供者类说明
    使用PHP实现命令模式(转)
    异步回收fork出的子进程(僵尸进程)
  • 原文地址:https://www.cnblogs.com/Maculish/p/Mac_Essay.html
Copyright © 2020-2023  润新知