跨线程访问窗体和控件

来源:互联网 发布:mac itunes连不上手机 编辑:程序博客网 时间:2024/05/16 03:03
using System;using System.Threading;using System.Windows.Forms;namespace ThreadOperation{    public partial class Form1 : Form    {        /// <summary>        /// 子线程        /// </summary>        private Thread thread;        /// <summary>        /// 委托        /// </summary>        private delegate void ShowMsg();        public Form1()        {            InitializeComponent();        }        private void btnRun_Click(object sender, EventArgs e)        {            thread = new Thread(new ThreadStart(ThreadStart));            thread.IsBackground = true;            thread.Start();        }        private void ThreadStart()        {            /*txtMsg.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");            由于窗体线程和thread线程是两个线程,所以直接访问窗体控件,会引起线程间访问异常             */            //通过委托的方式调用可以解决这个问题            ShowMsg show=new ShowMsg(ShowDateTime);            this.Invoke(show);        }        /// <summary>        /// 显示当前时间        /// </summary>        private void ShowDateTime()        {            txtMsg.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");        }    }}

0 0
原创粉丝点击