现在的位置: 首页 > 综合 > 正文

Common ThreadView

2012年06月06日 ⁄ 综合 ⁄ 共 2460字 ⁄ 字号 评论关闭

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Drawing;
using System.Windows.Forms;

namespace Common
{

    public delegate void _Bgz_OnUpdateUI(object sender, MessageEvents e);

    public class MessageEvents : EventArgs
    {
        public string Msg;
        public string Control;
        public MessageEvents(string msg, string control)
        {
            Msg = msg;
            Control = control;
        }
    }

    public class ThreadView
    {
        #region 跨线程窗体控件操作
        //private void UpdateUI(object sender, MessageEvents e)
        //{
        //    lock (this)
        //    {
        //        switch (e.Control)
        //        {
        //            case "rtbReceiveMessage":
        //                this.rtbReceiveMessage.AppendText(e.Msg + "\r\n");
        //                this.rtbReceiveMessage.ScrollToCaret();
        //                break;
        //            case "rtbReceiveMessageApp":
        //                this.rtbReceiveMessage.AppendText(e.Msg);
        //                this.rtbReceiveMessage.ScrollToCaret();
        //                break;
        //            case "statusBarPanel1":
        //            default:
        //                this.statusBarPanel1.Text = e.Msg;
        //                break;
        //        }
        //    }
        //}
        #endregion

        public _Bgz_OnUpdateUI OnUpdateUIEventDelegate;
        private void OnUpdateUIEvent(object sender, MessageEvents e)
        {
            if (OnUpdateUIEventDelegate != null) OnUpdateUIEventDelegate(sender, e);
        }
        private Form _form;
        private int _threadSleep = 100;

        public ThreadView(Form form)
        {
            this._form = form;
        }

        public ThreadView(Form form, int threadsleep)
        {
            this._form = form;
            this._threadSleep = threadsleep;
        }

        public void ShowState(string msg, string control)
        {
            try
            {
                MessageEvents e = new MessageEvents(msg, control);
                Thread ss = new Thread(new ParameterizedThreadStart(InvokeState));
                ss.Start(e);
                Thread.Sleep(this._threadSleep);
            }
            catch { }
        }

        private void InvokeState(object obj)
        {
            try
            {
                System.EventArgs e = (MessageEvents)obj;
                object[] pList = { this, e };
                this._form.BeginInvoke(new MessageEventsHandler(OnUpdateUIEvent), pList);
            }
            catch (Exception ex)
            {
            }
        }

        private delegate void MessageEventsHandler(object sender, MessageEvents e);
    }
}

抱歉!评论已关闭.