高分问个关于多线程的问题!
以下是个多线程上传文件的代码,其中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;