分享

从不是创建控件的线程访问控件(1)(原创)...

 蜗牛之窝 2009-11-17
可以通过将 CheckForIllegalCrossThreadCalls 属性的值设置为 false 来禁用此异常。这会使控件以与在 Visual Studio 2003 下相同的方式运行。详见下面代码示例:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace WindowsFormsApplication2
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        private void Form2_Load(object sender, EventArgs e)
        {
            Form2.CheckForIllegalCrossThreadCalls = false;//不运行此句代码,将引发异常:线程间操作无效: 从不是创建控件“progressBar1”的线程访问它。
        }
        private void button1_Click(object sender, EventArgs e)
        {
            progressBar1.Value = 0;
            ThreadStart ts = new ThreadStart(showProgress);
            Thread thread = new Thread(ts);
            thread.Start();
        }
        private void showProgress()
        {
            for (int i = 0; i < progressBar1.Maximum; i++)
            {
                progressBar1.Value += 1;
                Thread.Sleep(100);
            }
        }
    }
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多