コード例 #1
0
        /// <summary>
        /// 后台异步运行代码
        /// </summary>
        /// <param name="doWork">需要异步执行方法委托</param>
        /// <param name="runWorkerCompleted">异步执行完成后的方法委托</param>
        public static void RunInBackground(DoWorkEventHandler doWork, RunWorkerCompletedEventHandler runWorkerCompleted)
        {
            var loadingFrm = new LoadingFrm();

            using (var worker = new BackgroundWorker())
            {
                worker.DoWork             += doWork;
                worker.RunWorkerCompleted += delegate(object obj, RunWorkerCompletedEventArgs env)
                {
                    loadingFrm.Close();//关闭等待窗口
                };
                worker.RunWorkerCompleted += runWorkerCompleted;
                worker.RunWorkerAsync(); //执行异步线程
                loadingFrm.ShowDialog(); //打开等待窗口
            }
        }
コード例 #2
0
        public void Start(int maxval = 100)
        {
            if (thread != null)
            {
                return;
            }

            _value    = 0;
            _maxvalue = maxval;

            frm = new LoadingFrm()
            {
                MaxValue = _maxvalue,
                Value    = _value
            };

            thread = new System.Threading.Thread(_threadFunc);
            thread.Start(frm);
        }
コード例 #3
0
        private void _threadFunc(object obj)
        {
            LoadingFrm frm = obj as LoadingFrm;

            frm.ShowDialog();
        }