Exemplo n.º 1
0
 private void worker_OnProgress(object sender, DUWorkerEventArgs e)
 {
     if (e.op.status == OperationStatus.Processing)
     {
         lock (locker)
         {
             if (!updatedOp.Contains(e.op))
             {
                 updatedOp.Add(e.op, e.op);
             }
             if (orgDoneSize == 0 || e.op.doneSize < orgDoneSize)
             {
                 orgDoneSize = e.op.doneSize;
                 speed       = 0;
                 totalSize   = e.op.totalSize;
             }
             else
             {
                 speed      += e.op.doneSize - orgDoneSize;
                 orgDoneSize = e.op.doneSize;
                 totalSize   = e.op.totalSize;
             }
         }
     }
 }
Exemplo n.º 2
0
 private void Worker_OnThreadChanged(object sender, DUWorkerEventArgs e)
 {
     lock (locker)
     {
         runningThreadCount = e.op.runningThreadCount;
         totalThreadCount   = e.op.totalThreadCount;
     }
 }
Exemplo n.º 3
0
        private void worker_OnCompleted(object sender, DUWorkerEventArgs e)
        {
            Interlocked.Add(ref pendingCount, -1);
            Statistics(e.op, 1);
            ProgressListview.ProgressSubItem progress = e.op.Tag as ProgressListview.ProgressSubItem;
            if (progress != null && progress.Owner != null)
            {
                lock (locker)
                {
                    if (updatedOp.Contains(e.op))
                    {
                        updatedOp.Remove(e.op);
                    }
                }
                if (lvItems.InvokeRequired)
                {
                    lvItems.Invoke(new AnonymousFunction(delegate()
                    {
                        progress.ShowProgress = false;
                        progress.ForeColor    = GetStatusColor(e.op);
                        progress.Text         = GetStatusText(e.op);
                        ListViewItem item     = progress.Owner;
                        if (item != null)
                        {
                            item.SubItems[2].Text = GetSizeText(e.op);
                        }
                    }));
                }
                else
                {
                    progress.ShowProgress = false;
                    progress.ForeColor    = GetStatusColor(e.op);
                    progress.Text         = GetStatusText(e.op);
                    ListViewItem item = progress.Owner;
                    if (item != null)
                    {
                        item.SubItems[2].Text = GetSizeText(e.op);
                    }
                }
            }

            //重置速度计算
            lock (locker)
            {
                speed       = 0;
                orgDoneSize = 0;
            }
        }
Exemplo n.º 4
0
        private void worker_OnCompleted(object sender, DUWorkerEventArgs e)
        {
            Interlocked.Add(ref pendingCount, -1);
            Statistics(e.op, 1);
            if (e.op.status == OperationStatus.Fail)
            {
                if (AppSettings.RetryWhenDownloadFailed && e.op.operation == Operation.Download)
                {
                    if (lvItems.InvokeRequired)
                    {
                        lvItems.Invoke(new AnonymousFunction(delegate() {
                            ChangeOpStatus(e.op, OperationStatus.Pending);
                        }));
                    }
                    else
                    {
                        ChangeOpStatus(e.op, OperationStatus.Pending);
                    }
                    return;
                }
                else if (AppSettings.RetryWhenUploadFailed && e.op.operation == Operation.Upload)
                {
                    if (lvItems.InvokeRequired)
                    {
                        lvItems.Invoke(new AnonymousFunction(delegate() {
                            ChangeOpStatus(e.op, OperationStatus.Pending);
                        }));
                    }
                    else
                    {
                        ChangeOpStatus(e.op, OperationStatus.Pending);
                    }
                    return;
                }
            }
            ProgressListview.ProgressSubItem progress = e.op.Tag as ProgressListview.ProgressSubItem;
            if (progress != null && progress.Owner != null)
            {
                lock (locker)
                {
                    if (updatedOp.Contains(e.op))
                    {
                        updatedOp.Remove(e.op);
                    }
                }
                if (lvItems.InvokeRequired)
                {
                    lvItems.Invoke(new AnonymousFunction(delegate()
                    {
                        progress.ShowProgress = false;
                        progress.ForeColor    = GetStatusColor(e.op);
                        progress.Text         = GetStatusText(e.op);
                        ListViewItem item     = progress.Owner;
                        if (item != null)
                        {
                            item.SubItems[2].Text = GetSizeText(e.op);
                        }
                    }));
                }
                else
                {
                    progress.ShowProgress = false;
                    progress.ForeColor    = GetStatusColor(e.op);
                    progress.Text         = GetStatusText(e.op);
                    ListViewItem item = progress.Owner;
                    if (item != null)
                    {
                        item.SubItems[2].Text = GetSizeText(e.op);
                    }
                }
            }

            //重置速度计算
            lock (locker)
            {
                speed       = 0;
                orgDoneSize = 0;
            }
        }
Exemplo n.º 5
0
 private void worker_OnProgress(object sender, DUWorkerEventArgs e)
 {
     if (e.op.status == OperationStatus.Processing)
     {
         lock (locker)
         {
             if (!updatedOp.Contains(e.op))
                 updatedOp.Add(e.op, e.op);
             if (orgDoneSize == 0 || e.op.doneSize < orgDoneSize)
             {
                 orgDoneSize = e.op.doneSize;
                 speed = 0;
             }
             else
             {
                 speed += e.op.doneSize - orgDoneSize;
                 orgDoneSize = e.op.doneSize;
             }
         }
     }
 }
Exemplo n.º 6
0
        private void worker_OnCompleted(object sender, DUWorkerEventArgs e)
        {
            Interlocked.Add(ref pendingCount, -1);
            Statistics(e.op, 1);
            if (e.op.status == OperationStatus.Fail)
            {
                if (AppSettings.RetryWhenDownloadFailed && e.op.operation == Operation.Download)
                {
                    if (lvItems.InvokeRequired)
                        lvItems.Invoke(new AnonymousFunction(delegate() {
                            ChangeOpStatus(e.op, OperationStatus.Pending);
                        }));
                    else
                        ChangeOpStatus(e.op, OperationStatus.Pending);
                    return;
                }
                else if (AppSettings.RetryWhenUploadFailed && e.op.operation == Operation.Upload)
                {
                    if (lvItems.InvokeRequired)
                        lvItems.Invoke(new AnonymousFunction(delegate() {
                            ChangeOpStatus(e.op, OperationStatus.Pending);
                        }));
                    else
                        ChangeOpStatus(e.op, OperationStatus.Pending);
                    return;
                }
            }
            ProgressListview.ProgressSubItem progress = e.op.Tag as ProgressListview.ProgressSubItem;
            if (progress != null && progress.Owner != null)
            {
                lock (locker)
                {
                    if (updatedOp.Contains(e.op))
                        updatedOp.Remove(e.op);
                }
                if (lvItems.InvokeRequired)
                {
                    lvItems.Invoke(new AnonymousFunction(delegate()
                    {
                        progress.ShowProgress = false;
                        progress.ForeColor = GetStatusColor(e.op);
                        progress.Text = GetStatusText(e.op);
                        ListViewItem item = progress.Owner;
                        if (item != null)
                            item.SubItems[2].Text = GetSizeText(e.op);
                    }));
                }
                else
                {
                    progress.ShowProgress = false;
                    progress.ForeColor = GetStatusColor(e.op);
                    progress.Text = GetStatusText(e.op);
                    ListViewItem item = progress.Owner;
                    if (item != null)
                        item.SubItems[2].Text = GetSizeText(e.op);
                }
            }

            //重置速度计算
            lock(locker)
            {
                speed = 0;
                orgDoneSize = 0;
            }
        }