Exemple #1
0
 private void CopyInternal(string source, string dest, bool overwrite, bool isLargeTransfer, EventHandler <ProgressChangedEventArgs> progressChangedHandler, EventHandler completedHandler, XCopy.ErrorHandler errorHandler)
 {
     try
     {
         XCopy.CopyFileFlags copyFileFlags = XCopy.CopyFileFlags.COPY_FILE_RESTARTABLE;
         if (!overwrite)
         {
             copyFileFlags |= XCopy.CopyFileFlags.COPY_FILE_FAIL_IF_EXISTS;
         }
         if (isLargeTransfer)
         {
             copyFileFlags |= XCopy.CopyFileFlags.COPY_FILE_NO_BUFFERING;
         }
         this.Source = source;
         this._dst   = dest;
         if (progressChangedHandler != null)
         {
             this.ProgressChanged = (EventHandler <ProgressChangedEventArgs>)Delegate.Combine(this.ProgressChanged, progressChangedHandler);
         }
         if (completedHandler != null)
         {
             this.Completed = (EventHandler)Delegate.Combine(this.Completed, completedHandler);
         }
         if (!XCopy.CopyFileEx(this.Source, this._dst, new XCopy.CopyProgressRoutine(this.CopyProgressHandler), IntPtr.Zero, ref this._isCancelled, copyFileFlags))
         {
             throw new Win32Exception(Marshal.GetLastWin32Error());
         }
     }
     catch (Exception ex)
     {
         if (progressChangedHandler != null)
         {
             this.ProgressChanged = (EventHandler <ProgressChangedEventArgs>)Delegate.Remove(this.ProgressChanged, progressChangedHandler);
         }
         if (completedHandler != null)
         {
             this.Completed = (EventHandler)Delegate.Remove(this.Completed, completedHandler);
         }
         if (errorHandler != null)
         {
             errorHandler(ex);
         }
     }
 }
Exemple #2
0
 private static extern bool CopyFileEx(string lpExistingFileName, string lpNewFileName, XCopy.CopyProgressRoutine lpProgressRoutine, IntPtr lpData, ref int pbCancel, XCopy.CopyFileFlags dwCopyFlags);