예제 #1
0
파일: XCopy.cs 프로젝트: IronArthur/MCUnity
 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);
         }
     }
 }
예제 #2
0
파일: XCopy.cs 프로젝트: IronArthur/MCUnity
 internal static void Copy(string source, string dest, bool overwrite, bool isLargeTransfer = false, EventHandler <ProgressChangedEventArgs> progressChangedHandler = null, EventHandler completedHandler = null, XCopy.ErrorHandler errorHandler = null)
 {
     new XCopy().CopyInternal(source, dest, overwrite, isLargeTransfer, progressChangedHandler, completedHandler, errorHandler);
 }