コード例 #1
0
        /// <summary>
        /// 添加任务
        /// </summary>
        /// <param name="poltConfig"></param>
        /// <param name="chiaSetting"></param>
        /// <returns></returns>
        public static int SaveTask(string id, PoltConfig poltConfig, ChiaSetting chiaSetting)
        {
            ChinPoltTask _task = null;

            if (string.IsNullOrEmpty(id))
            {
                _task = new ChinPoltTask()
                {
                    completeNumber  = 0,
                    currentProgress = "--/--",
                    id          = Guid.NewGuid().ToString(),
                    poltConfig  = poltConfig,
                    chiaSetting = chiaSetting,
                    status      = TaskStatusEnum.Stop
                };
                //任务开始前检查硬盘空间状态
                _task.BeforeTaskStart += (sender =>
                {
                    return(CheckedTaskHardDiskFreeSpace(sender));
                });
                ChinPoltTasks.Add(_task);
            }
            else
            {
                _task = ChinPoltTasks.FirstOrDefault(f1 => f1.id == id);
                _task.Stop();
                _task.chiaSetting = chiaSetting;
                _task.poltConfig  = poltConfig;
            }
            Task.Factory.StartNew(() => _task.Start(new System.Threading.CancellationTokenSource()));
            return(0);
        }
コード例 #2
0
        /// <summary>
        /// 关闭时保存基础设置
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void FormMain_FormClosing(object sender, FormClosingEventArgs e)
        {
            ChiaSetting.SaveConfig(chiaSetting);
            bool isRuning = ChiaPoltTaskFactory.ChinPoltTasks.Any(a1 => a1.status == TaskStatusEnum.Runing);

            ChiaPoltTaskFactory.ChinPoltTasks?.ForEach(f1 => f1.Stop());
            if (isRuning)
            {
                Task.Factory.StartNew(() =>
                {
                    do
                    {
                        System.Threading.Thread.Sleep(1500);
                    }while (ChiaPoltTaskFactory.ChinPoltTasks.Any(a1 => a1.status == TaskStatusEnum.Runing));
                    Application.Exit();
                });
                e.Cancel = true;
            }
        }
コード例 #3
0
 /// <summary>
 /// 界面加载(加载配置信息)
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void FormMain_Load(object sender, EventArgs e)
 {
     chiaSetting = ChiaSetting.LoadConfig() ?? new ChiaSetting()
     {
         poltConfig = new List <PoltConfig>()
     };
     ChiaPoltTaskFactory.StopChiaThread();
     chiaSetting?.poltConfig.ForEach(f1 =>
     {
         ChiaPoltTaskFactory.SaveTask(string.Empty, f1, chiaSetting);
     });
     OnShow();
     this.txt_chiapath.Text = chiaSetting.setupPath;
     this.txt_pf.Text       = chiaSetting.farmerPublicKey;
     this.txt_pp.Text       = chiaSetting.poolPublicKey;
     ChiaPoltTaskFactory.TaskStatusChangeEvent += (data) => {
         this.Invoke((EventHandler)(delegate
         {
             OnShow();
         }));
     };
 }