private void btnAccept_Click(object sender, EventArgs e) { try { var novel = BH.GetNovel(novelId); var menuList = BH.GetNovelContents(novelId).ToList <NovelContent>(); var theme = SysSetting.GetInstance().ThemeModel; var dirInfo = new DirectoryInfo(string.Format(BookHelper.DIR_PATH_NOVEL, novel.NovelID)); var fileInfos = dirInfo.GetFiles(); var listModelContent = CommonHelper.LoadHtmlFile(theme.ListModelPath); var chapterModelContent = CommonHelper.LoadHtmlFile(theme.ChapterModelPath); int i = 0; btnAccept.Enabled = false; progressBar1.Minimum = 0; progressBar1.Maximum = fileInfos.Length; progressBar1.Visible = true; var _ManualEvents = new MutipleThreadResetEvent(fileInfos.Length); ThreadPool.SetMinThreads(1, 1); ThreadPool.SetMaxThreads(5, 10); foreach (var fileInfo in fileInfos) { if (fileInfo.Name.Contains("List.htm")) { ThreadPool.QueueUserWorkItem(state => BH.SaveNovelListToHtml(novel, menuList, listModelContent)); _ManualEvents.SetOne(); //BH.SaveNovelListToHtml(novel, menuList, listModelContent); } else { ThreadPool.QueueUserWorkItem(state => ChangeModel(fileInfo, chapterModelContent, _ManualEvents)); //BH.ChangeThemeModel(fileInfo, chapterModelContent); } i++; //this.Invoke(new RefreshUI(refreshUI), i); //this.Invoke(new Action<int>((value) => //{ // progressBar1.Value = value; // if (progressBar1.Maximum == value) // { // progressBar1.Visible = false; // btnAccept.Enabled = true; // } //}), i); } //_ManualEvents.WaitAll(); //MessageBox.Show("应用完成!"); } catch (Exception ex) { MessageBox.Show(ex.Message); progressBar1.Visible = false; btnAccept.Enabled = true; } }
/// <summary> /// 根据通道配置表,开始设置仪器 /// </summary> public void SetDevices() { Debug.WriteLine(DateTime.Now.ToString() + " 开始配置"); using (var countdown = new MutipleThreadResetEvent(Instance.Devices.Count)) { for (int k = 0; k < Instance.Devices.Count; k++) { var model = new MutipleThreadSendCmd(); model.SetDevice(Instance.Devices[k]); model.MTREvent = countdown; //开启N个线程,传递MutipleThreadResetEvent对象给子线程 ThreadPool.QueueUserWorkItem(SetSingleDevice, model); } //等待所有线程执行完毕 countdown.WaitAll(); } Debug.WriteLine(DateTime.Now.ToString() + " "); }
public void ChangeModel(FileInfo fileInfo, string modelContent, MutipleThreadResetEvent e) { BH.ChangeThemeModel(fileInfo, modelContent, null); e.SetOne(); this.Invoke(new RefreshUI(refreshUI), e.index); }