コード例 #1
0
        /// <summary>
        /// Método que controla el fin de la ejecución de un proceso en segundo plano
        /// </summary>
        /// <param name="stickyId">Identificador del plan de ejecución</param>
        /// <param name="e">Argumentos del evento de fin de ejecución</param>
        /// <param name="work">Proceso en segundo plano</param>
        private static void EndWorkExecution(long stickyId, DoWorkEventArgs e, BackgroundWorker work = null)
        {
            Hal.Results[stickyId] = e.Result;

            //Comprobamos si el trabajo es periodico
            if (!StickyUtils.GetStickyProp <bool>(e.Argument, "IsPeriodic"))
            {
                //Finalizamos la ejecución del trabajo
                RemoveWork(stickyId);

                if (work != null)
                {
                    lock (Hal.KingHill)
                    {
                        Hal.KingHill.ReleasePriority(work.GetHashCode().ToString(CultureInfo.InvariantCulture));
                    }
                }
            }
            else
            {
                //Pausamos el trabajo y lo volvemos a ejecutar de nuevo
                Thread.Sleep(StickyUtils.GetStickyProp <int>(e.Argument, "MillisecondsDelay"));

                var newWork = CreateWork();
                newWork.RunWorkerAsync(e.Argument);
            }
        }
コード例 #2
0
        public void CheckDBConnectionVisualAsync(string connectionString,
                                                 bool isDbConnectionOkMessageRequired = true,
                                                 Window owner = null)
        {
            this.isDbConnectionOkMessageRequired = isDbConnectionOkMessageRequired;
            //SqlCommand command = new SqlCommand();
            splashScreen = new DBConnectionSplashScreen(this.cancelCheckDbConnection);
            splashScreen.WindowStartupLocation = WindowStartupLocation.CenterScreen;
            splashScreen.Topmost = true;
            if (owner != null)
            {
                splashScreen.Owner                 = owner;
                splashScreen.ShowInTaskbar         = false;
                splashScreen.WindowStartupLocation = WindowStartupLocation.CenterOwner;
            }
            splashScreen.Show();

            Debug.WriteLine("backgroundWorker(" + backgroundWorker.GetHashCode() + ").RunWorkerAsync(command)");
            this.backgroundWorker.RunWorkerAsync(connectionString);
        }
コード例 #3
0
        /// <summary>
        /// Instance un nuevo Token con los datos asociados al proceso en
        /// segundo plano pasados por parámetros
        /// </summary>
        /// <param name="stickyId">Identificador del plan de ejecución</param>
        /// <param name="data">Datos asociados al plan de ejecución</param>
        /// <param name="worker">Proceso en segundo plano</param>
        public Token(long stickyId, T data, BackgroundWorker worker)
        {
            StickyId = stickyId;
            Data     = data;
            Worker   = worker;
            _hash    = worker.GetHashCode().ToString(CultureInfo.InvariantCulture);

            Hal.KingHill.KingChanged += AdjustPriorityKing;

            if (_hash.Equals(Hal.KingHill.Hash))
            {
                Thread.CurrentThread.Priority = ThreadPriority.BelowNormal;
            }
        }
コード例 #4
0
 private void Window_Loaded(object sender, RoutedEventArgs e)
 {
     worker.RunWorkerAsync();
     md.AddWorker(worker.GetHashCode(), "初始化任务", 0);
 }
コード例 #5
0
ファイル: Login.cs プロジェクト: ahmed1amen/Pinterest-Manger
        private async void SimpleButton5_Click(object sender, EventArgs e)
        {
            int[] selectedRows = GridView_Tasks.GetSelectedRows();
            foreach (int rowHandle in selectedRows)
            {
                if (rowHandle >= 0)
                {
                    String ID                     = GridView_Tasks.GetRowCellValue(rowHandle, "PID").ToString();
                    String status                 = GridView_Tasks.GetRowCellValue(rowHandle, "Task_Status").ToString();
                    String Scraping_Account       = GridView_Tasks.GetRowCellValue(rowHandle, "Scraping_Account").ToString();
                    String Scraped_Board          = GridView_Tasks.GetRowCellValue(rowHandle, "Scraped_Board").ToString();
                    String Posting_Board          = GridView_Tasks.GetRowCellValue(rowHandle, "Posting_Board").ToString();
                    String acctoken               = GridView_Tasks.GetRowCellValue(rowHandle, "acctoken").ToString();
                    String accPassword            = GridView_Tasks.GetRowCellValue(rowHandle, "accPassword").ToString();
                    String t1delay                = GridView_Tasks.GetRowCellValue(rowHandle, "t1delay").ToString();
                    String t2delay                = GridView_Tasks.GetRowCellValue(rowHandle, "t2delay").ToString();
                    String PostingaccountUsername = GridView_Tasks.GetRowCellValue(rowHandle, "PostingAccountUsername").ToString();



                    if (status.Contains(TaskManger.TaskManagerStatus.Paused) || status.Contains(TaskManger.TaskManagerStatus.Failed))
                    {
                        BackgroundWorker t = new BackgroundWorker();
                        t.WorkerSupportsCancellation = true;
                        string pid = t.GetHashCode().ToString();

                        t.DoWork += new DoWorkEventHandler(delegate(object o, DoWorkEventArgs a)
                        {
                            PinObject pinObject = new PinObject(pid,
                                                                Scraping_Account,
                                                                accPassword,
                                                                acctoken,
                                                                Posting_Board,
                                                                int.Parse(t1delay),
                                                                int.Parse(t2delay),
                                                                PostingaccountUsername

                                                                );



                            pinObject.Resume();
                        });

                        DataRow dxr = DT_TaskManger.Select("PID='" + ID + "'").FirstOrDefault();
                        dxr["PID"] = pid;
                        GridView_Tasks.SetRowCellValue(rowHandle, "PID", pid);
                        ID = pid;



                        appHelper.SetTaskMangerDataTable_Control = DT_TaskManger;
                        GridControl_Tasks.Focus();
                        GridControl_Tasks.Refresh();


                        TaskList.Add(t);
                        //t.RunWorkerAsync();

                        TaskManger.Running_Process += t.GetHashCode().ToString();



                        foreach (BackgroundWorker ts in TaskList)
                        {
                            if (ts.GetHashCode().ToString() == ID)
                            {
                                TaskManger.Running_Process += ts.GetHashCode().ToString() + " ";
                                ts.RunWorkerAsync();


                                GridView_Tasks.SetRowCellValue(rowHandle, "Task_Status", TaskManagerStatus.Running);
                            }
                        }


                        return;
                    }


                    foreach (BackgroundWorker t in TaskList)
                    {
                        if (t.GetHashCode().ToString() == ID)
                        {
                            TaskManger.Running_Process = TaskManger.Running_Process.Replace(t.GetHashCode().ToString(), "");
                            simpleButton5.Enabled      = false;
                        }
                    }
                }
            }

            appHelper.SetTaskMangerDataTable_Control = DT_TaskManger;
        }
コード例 #6
0
ファイル: Login.cs プロジェクト: ahmed1amen/Pinterest-Manger
        private async void SimpleButton9_Click(object sender, EventArgs e)
        {
            txt_BoardURL.Text = txt_BoardURL.Text.ToLower().Replace("https://www.pinterest.com/", "").Replace("http://www.pinterest.com/", "").Replace("pinterest.com/", "");
            if (txt_BoardURL.Text.EndsWith("/"))
            {
                txt_BoardURL.Text = txt_BoardURL.Text.TrimEnd(txt_BoardURL.Text[txt_BoardURL.Text.Length - 1]);
            }

            if (Lookup_ScrapingAccount.GetSelectedDataRow() == null || Lookup_PostingAccount.GetSelectedDataRow() == null)
            {
                MessageBox.Show("Please Select The scraping Account And The Posting Accoint! ", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            if (Combo_CurentBoard.SelectedItem == null)
            {
                MessageBox.Show("Please Select an Board ! ", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }



            dynamic ScrapingAccount = Lookup_ScrapingAccount.GetSelectedDataRow();
            dynamic PostingAccount  = Lookup_PostingAccount.GetSelectedDataRow();

            if (ScrapingAccount.Row.ItemArray[1].ToString() == "")
            {
                MessageBox.Show("You Must Enter The Password of Scraping Account", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }


            BackgroundWorker t = new BackgroundWorker();

            t.WorkerSupportsCancellation = true;
            string pid = t.GetHashCode().ToString();

            t.DoWork += new DoWorkEventHandler(delegate(object o, DoWorkEventArgs a)
            {
                PinObject pinObject = new PinObject(pid, ScrapingAccount.Row.ItemArray[0].ToString(), ScrapingAccount.Row.ItemArray[1].ToString(), PostingAccount.Row.ItemArray[3].ToString(), Combo_CurentBoard.SelectedItem.ToString(), ((int)num1.Value), ((int)num2.Value), PostingAccount.Row.ItemArray[0].ToString());
                pinObject.ScrapBoard(txt_BoardURL.Text, ((int)ScrapBoardLimit.Value));
            });

            TaskList.Add(t);
            //t.RunWorkerAsync();

            TaskManger.Running_Process += t.GetHashCode().ToString();

            FILEWriter fILEWriter = new FILEWriter();

            setscad();

            DT_TaskManger.Rows.Add(
                ScrapingAccount.Row.ItemArray[0].ToString(),
                PostingAccount.Row.ItemArray[0].ToString(),
                TaskManger.TaskMangerProcess.ScrapBoard + "_" + txt_keyword.Text,
                txt_BoardURL.Text,
                Combo_CurentBoard.SelectedItem.ToString(),
                Scad,
                "0",
                "0",
                "0",
                TaskManger.TaskManagerStatus.Ready,
                DateTime.Now.ToString(),
                "",
                t.GetHashCode().ToString(),
                txt_forcechangeurl.Text,
                "",
                PostingAccount.Row.ItemArray[3].ToString(),
                ScrapingAccount.Row.ItemArray[1].ToString(),
                num1.Value,
                num2.Value,
                ScrapBoardLimit.Value,
                PostingAccount.Row.ItemArray[0].ToString());

            Lookup_ScrapingAccount.Enabled = true;
        }
コード例 #7
0
 public void StartProcess(BackgroundWorker worker)
 {
     StartProcess(worker.GetHashCode().ToString());
 }
コード例 #8
0
 public void RemoveProcess(BackgroundWorker worker)
 {
     RemoveProcess(worker.GetHashCode().ToString());
 }
コード例 #9
0
 public bool IsProcessRunning(BackgroundWorker worker)
 {
     return(IsProcessRunning(worker.GetHashCode().ToString()));
 }
コード例 #10
0
 /// <summary>
 /// Adds a process with default name to this handler. The default name used by this
 /// <see cref="IProcessHandler"/> implementation is the hash code value of the class
 /// as string. See also: <seealso cref="AddProcess(string, BackgroundWorker)"/>
 /// </summary>
 /// <param name="worker">the process as BackgorundWorker</param>
 public void AddProcess(BackgroundWorker worker)
 {
     AddProcess(worker.GetHashCode().ToString(), worker);
 }