Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
0
 /// <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() + " ");
 }
Esempio n. 3
0
 public void ChangeModel(FileInfo fileInfo, string modelContent, MutipleThreadResetEvent e)
 {
     BH.ChangeThemeModel(fileInfo, modelContent, null);
     e.SetOne();
     this.Invoke(new RefreshUI(refreshUI), e.index);
 }