线程异步调用

 private void format()//耗时方法
        {
            doing = true;           
            try
            {
                if (Do(mergestr, file1,0) == 0)
                {
                    int ret = Change(file1, colorring);
                    try
                    {
                        if (File.Exists(file2))
                        {
                            File.SetAttributes(file2, FileAttributes.Normal);
                        }
                    }
                    catch { }
                    File.Copy(colorring, file2,true);
                    _isover = ret == 0 ? true : false;
                }
                else
                {
                    _isover = false;
                }
            }
            catch
            {
                _isover = false;
            }
            over = true;
        }
        private void timer2_Tick(object sender, EventArgs e)//子线程
        {
            try
            {               
                timer2.Enabled = false;
                if (!doing)
                {
                    Thread th = new Thread(new ThreadStart(dosomething));
                    th.TrySetApartmentState(ApartmentState.STA);
                    th.IsBackground = true;
                    th.Start();
                }
            }
            catch
            {
                over = true;
            }  
        }
        private void dosomething()//异步调用
        {
            try
            {
                MethodInvoker mi = new MethodInvoker(format);
                mi.BeginInvoke(null, null);
            }
            catch
            { }
        }
        private void timer1_Tick(object sender, EventArgs e)//ui线程
        {
            if (over)
            {
                this.Close();
            }
            if (label2.Text.Length < 6)
            {
                label2.Text += ".";
            }
            else
            {
                label2.Text = "";
            }
        }
posted @ 2009-09-21 10:59  94cool  阅读(190)  评论(0)    收藏  举报