以下是个多线程上传文件的代码,其中WaitHandle.WaitAll(events);这句需要在Main函数前把[STAThread]修改成[MTAThread],而在我的程序中使用了webBrowser控件,这个控件要求使用[STAThread]该如何解决这个冲突呢?小弟初来乍到,望请高手指教!
//多线程备份文件
        public bool mutiThreadUploadFile(string fileName,string SN)
        {
            FileInfo fi = new FileInfo(fileName);
            if (fi.Exists)
            {
                button5.Enabled = false;//避免连续两次上传
                //初始信号
                ManualResetEvent[] events = new ManualResetEvent[5];
                //分块——分成5块下载
                int nTotalBytes = (int)(fi.Length / 5);
                for (int i = 0; i < 5; i++)
                {
                    events[i] = new ManualResetEvent(false);
                    FileThread thdSub = new FileThread(
                    i * nTotalBytes,
            (fi.Length - i * nTotalBytes) > nTotalBytes ? nTotalBytes : (int)(fi.Length - i * nTotalBytes),
                fi.FullName,SN);
                    ThreadPool.QueueUserWorkItem(new WaitCallback(thdSub.UploadFile), events[i]);
                }
                //等待进程结束
                WaitHandle.WaitAll(events);
                //重置 button 状态
                button5.Enabled = true;
                return true;
            }
            else
                return false;
        }