利用CheckForIllegalCrossThreadCalls=false設定跨執行緒訪問

iamzxf發表於2015-06-01

     在多執行緒程式中,新建立的執行緒不能訪問UI執行緒建立的視窗控制元件,如果需要訪問視窗中的控制元件,可以在視窗建構函式中將CheckForIllegalCrossThreadCalls設定為 false。具體如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Threading;
using System.Text;
using System.Windows.Forms;

namespace thread1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            CheckForIllegalCrossThreadCalls = false;
        }
        private Thread threada;
        private void button1_Click(object sender, EventArgs e)
        {
            threada = new Thread(new ThreadStart(runner));
            threada.Start();
        }
        private void runner()
        {
            for (int i = 0; i < 101; i++)
            {
                label1.Text = i.ToString();
                Thread.Sleep(500);
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            label1.Text = "0";
        }
        private void Form1_FormClosing(object sender, EventArgs e)
        {
            if (threada.IsAlive)
                threada.Abort();
        }
    }
}

       在該應用中,一個視窗中有一個按鈕,一個label,通過點選按鈕,使label從0顯示到100。


相關文章