示例#1
0
 protected void ActivationProgressChanged(object sender, FileCopyProgressChangedEventArgs e)
 {
     pgbApp.Value = e.ProgressPercentage;
     lab_percent.Text = e.ProgressPercentage.ToString() + "%";
     lab_percent.Update();
     lab_fileinfo.Text = string.Format("{0}KB/{1}KB", (e.BytesToCopy / 1024).ToString("F2"), (e.TotalBytesToCopy / 1024).ToString("F2"));
     lab_fileinfo.Update();
     lab_filename.Text = "正在安装:" + e.SourceFileName;
     lab_filename.Update();
 }
示例#2
0
 private void OnActivationProgressChanged(FileCopyProgressChangedEventArgs e)
 {
     if (ActivationProgressChanged != null)
     {
         ActivationProgressChanged(this, e);
     }
 }
示例#3
0
 private void fileCopyer_FileCopyProgressChanged(object sender, FileCopyProgressChangedEventArgs e)
 {
     if (ActivationProgressChanged != null)
     {
         ActivationProgressChanged(sender, e);
     }
 }
示例#4
0
        private void FileCopyWorker(Manifest manifest, string sourcePath, AsyncOperation asyncOp)
        {
            Exception exception = null;
            FileCopyProgressChangedEventArgs e = null;
            Stream rStream = null;
            Stream wStream = null;
            double writeBytes = 0;
            string[] sourceFiles = null;
            string[] targetFiles = null;
            GetFiles(manifest, sourcePath, out sourceFiles, out targetFiles);
            if (!TaskCanceled(asyncOp.UserSuppliedState))
            {
                try
                {
                    double totalBytes = GetFileLength(sourceFiles);
                    byte[] buffer = new byte[writeFileLength];
                    int len = 0;
                    int offset = 0;
                    for (int i = 0; i < sourceFiles.Length; i++)
                    {
                        try
                        {
                            if (!Directory.Exists(Path.GetDirectoryName(targetFiles[i])))
                            {
                                Directory.CreateDirectory(Path.GetDirectoryName(targetFiles[i]));
                            }
                            rStream = new FileStream(sourceFiles[i], FileMode.Open, FileAccess.Read, FileShare.None);
                            wStream = new FileStream(targetFiles[i], FileMode.Create, FileAccess.Write, FileShare.None);
                            while ((len = rStream.Read(buffer, offset, writeFileLength)) > 0)
                            {
                                wStream.Write(buffer, offset, len);
                                writeBytes += len;
                                e = new FileCopyProgressChangedEventArgs((int)(writeBytes / totalBytes * 100), asyncOp.UserSuppliedState);
                                e.SourceFileName = sourceFiles[i];
                                e.TargetFileName = targetFiles[i];
                                e.TotalBytesToCopy = totalBytes;
                                e.BytesToCopy = len;
                                e.Manifest = manifest;
                                asyncOp.Post(this.onProgressReportDelegate, e);
                                Thread.Sleep(1);
                            }
                        }
                        finally
                        {
                            DisposeStream(wStream);
                            DisposeStream(rStream);
                        }
                    }
                }
                catch (Exception ex)
                {
                    exception = ex;
                    OnFileCopyError(new FileCopyErrorEventArgs() { Error = ex, Manifest = manifest });
                }

                if (exception == null && targetFiles.Length > 0)
                {
                    //解压文件
                    string fileName = targetFiles.First();
                    ZipHelper.DeCompressionZip(fileName, Path.GetFullPath("."));
                    File.Delete(fileName);
                }
            }
            this.CompletionMethod(manifest, exception, TaskCanceled(asyncOp.UserSuppliedState), asyncOp);
        }
示例#5
0
 protected void OnProgressChanged(FileCopyProgressChangedEventArgs e)
 {
     if (FileCopyProgressChanged != null)
     {
         FileCopyProgressChanged(this, e);
     }
 }