xp

导航

在Main Thread之外的线程中更新Control的属性

Posted on 2006-10-30 21:45  xp  阅读(327)  评论(0编辑  收藏  举报

在.net中不能直接在UI Control的创建线程之外修改UI Control的属性和内容。一个基本办法是通过调用UIControl 的Invoke方法。示例:timer触发的函数中更新label的值。
         private void btnConversion_Click(object sender, EventArgs e)
        {
            tm.Elapsed += new ElapsedEventHandler(Conversion);
            tm.Interval = 5000;
            tm.Enabled = true;
           
          
        }
        public delegate void UpdateEncodeMessageCallback(string Message);
        private void UpdateMessage(string Message)
        {
            lblEncodeMessage.Text = Message;
        }
          private void Conversion(object source, ElapsedEventArgs e)
        {
            lblEncodeMessage.Invoke(new UpdateEncodeMessageCallback(this.UpdateMessage), new object[] { FS.EncodeMessage.ToString() });
         }