示例#1
0
        private void btnDownload_Click(object sender, EventArgs e)
        {
            dictionary = new Dictionary <BackgroundWorker, ConversionTaskParameters>();
            ApplicationSettings.Instance.DefaultDownloadFolder = txbSaveFolder.Text;
            panel1.Controls.Clear();
            string[] lines = richTextBox1.Text.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
            int      index = 0;

            foreach (string line in lines)
            {
                foreach (string url in GetVideoUrls(line))
                {
                    var progressIndicator = new ProgressBar();
                    var lblProcessState   = new Label();
                    var lbFileName        = new Label();
                    var lbNetSpeed        = new Label();
                    panel1.Controls.Add(lbNetSpeed);
                    panel1.Controls.Add(lbFileName);
                    panel1.Controls.Add(lblProcessState);
                    panel1.Controls.Add(progressIndicator);
                    int step = 30;
                    progressIndicator.Location = new Point(500, 30 + index * step);
                    progressIndicator.Size     = new Size(160, 15);
                    lblProcessState.AutoSize   = true;
                    lblProcessState.Location   = new Point(345, 30 + index * step);
                    lbFileName.AutoSize        = true;
                    lbFileName.Location        = new Point(22, 30 + index * step);
                    lbNetSpeed.AutoSize        = true;
                    lbNetSpeed.Location        = new Point(281, 30 + index * step);
                    index++;
                    count++;
                    BackgroundWorker backgroundWorker = InitWorker();

                    var argument = new ConversionTaskParameters
                    {
                        ConversionProfile    = cmbConvertionOptions.SelectedItem as ConversionOption,
                        OriginalFileLocation = url,
                        QualityIndex         = cmbQuality.SelectedIndex,
                        IndirectConversion   = ApplicationSettings.Instance.UseIndirectConversion,
                        BackgroundWorker     = backgroundWorker,
                        lbFileName           = lbFileName,
                        lbNetSpeed           = lbNetSpeed,
                        lblProcessState      = lblProcessState,
                        progressIndicator    = progressIndicator
                    };

                    dictionary.Add(backgroundWorker, argument);
#if DEBUG
                    var e1 = new DoWorkEventArgs(argument);
                    backgroundWorker_DoWork(null, e1);
#else
                    backgroundWorker.RunWorkerAsync(argument);
#endif
                }
            }
        }
示例#2
0
        private void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            var bw = sender as BackgroundWorker;
            ConversionTaskParameters par = dictionary[bw];

            object userState = e.UserState;

            if (userState != null)
            {
                if (typeof(long).IsInstanceOfType(userState))
                {
                    par.lbNetSpeed.Text = string.Format("{0}kB/s", userState);
                }
                else if (typeof(int).IsInstanceOfType(userState))
                {
                    par.progressIndicator.Maximum = (int)userState;
                }
                else if (typeof(string).IsInstanceOfType(userState))
                {
                    var stateDescription = (string)userState;
                    if (!stateDescription.StartsWith("***"))
                    {
                        par.lblProcessState.Text = stateDescription;
                        Application.DoEvents();
                    }
                    else
                    {
                        par.lbFileName.Text = stateDescription.Substring(3);
                    }
                    Application.DoEvents();
                }
                else if (typeof(Exception).IsInstanceOfType(userState))
                {
                    MessageBox.Show(((Exception)userState).Message, Text, MessageBoxButtons.OK, MessageBoxIcon.Hand);
                }
            }
            if (e.ProgressPercentage <= par.progressIndicator.Maximum)
            {
                par.progressIndicator.Value = e.ProgressPercentage;
            }
            else
            {
                par.progressIndicator.Value = par.progressIndicator.Maximum;
            }
        }
示例#3
0
        private void btnDownload_Click(object sender, EventArgs e)
        {
            dictionary = new Dictionary<BackgroundWorker, ConversionTaskParameters>();
            ApplicationSettings.Instance.DefaultDownloadFolder = txbSaveFolder.Text;
            panel1.Controls.Clear();
            string[] lines = richTextBox1.Text.Split(new[] {'\r', '\n'}, StringSplitOptions.RemoveEmptyEntries);
            int index = 0;
            foreach (string line in lines)
            {
                foreach (string url in GetVideoUrls(line))
                {
                    var progressIndicator = new ProgressBar();
                    var lblProcessState = new Label();
                    var lbFileName = new Label();
                    var lbNetSpeed = new Label();
                    panel1.Controls.Add(lbNetSpeed);
                    panel1.Controls.Add(lbFileName);
                    panel1.Controls.Add(lblProcessState);
                    panel1.Controls.Add(progressIndicator);
                    int step = 30;
                    progressIndicator.Location = new Point(500, 30 + index*step);
                    progressIndicator.Size = new Size(160, 15);
                    lblProcessState.AutoSize = true;
                    lblProcessState.Location = new Point(345, 30 + index*step);
                    lbFileName.AutoSize = true;
                    lbFileName.Location = new Point(22, 30 + index*step);
                    lbNetSpeed.AutoSize = true;
                    lbNetSpeed.Location = new Point(281, 30 + index*step);
                    index++;
                    count++;
                    BackgroundWorker backgroundWorker = InitWorker();

                    var argument = new ConversionTaskParameters
                        {
                            ConversionProfile = cmbConvertionOptions.SelectedItem as ConversionOption,
                            OriginalFileLocation = url,
                            QualityIndex = cmbQuality.SelectedIndex,
                            IndirectConversion = ApplicationSettings.Instance.UseIndirectConversion,
                            BackgroundWorker = backgroundWorker,
                            lbFileName = lbFileName,
                            lbNetSpeed = lbNetSpeed,
                            lblProcessState = lblProcessState,
                            progressIndicator = progressIndicator
                        };

                    dictionary.Add(backgroundWorker, argument);
            #if DEBUG
                    var e1 = new DoWorkEventArgs(argument);
                    backgroundWorker_DoWork(null, e1);

            #else

                backgroundWorker.RunWorkerAsync(argument);
            #endif
                }
            }
        }