示例#1
0
        public async Task UnmountAsync(
            ImageCommitOptions options,
            bool commit,
            CancellationToken cancellationToken,
            [CanBeNull] IProgress <DismEventArgs> progress
            )
        {
            DismCommitAndUnmountFlags flags = 0;

            if ((options & ImageCommitOptions.Append) != 0)
            {
                flags |= DismCommitAndUnmountFlags.Append;
            }
            if ((options & ImageCommitOptions.GenerateIntegrityData) != 0)
            {
                flags |= DismCommitAndUnmountFlags.GenerateIntegrity;
            }
            if (commit)
            {
                flags |= DismCommitAndUnmountFlags.Commit;
            }
            else
            {
                flags |= DismCommitAndUnmountFlags.Discard;
            }
            await Task.Run(() =>
                           NativeMethods.DismUnmountImage(
                               this._mountPath,
                               flags,
                               cancellationToken.WaitHandle.SafeWaitHandle,
                               (current, total, userData) => progress?.Report(new DismEventArgs(current, total)),
                               IntPtr.Zero
                               )
                           );
        }
示例#2
0
 public async Task UnmountAsync(
     ImageCommitOptions options,
     bool commit,
     [CanBeNull] IProgress <DismEventArgs> progress
     ) => await this.UnmountAsync(options, commit, CancellationToken.None, progress);
示例#3
0
 public async Task UnmountAsync(
     ImageCommitOptions options,
     bool commit,
     CancellationToken cancellationToken
     ) => await this.UnmountAsync(options, commit, cancellationToken, null);
示例#4
0
 public void Unmount(
     ImageCommitOptions options,
     bool commit,
     [CanBeNull] IProgress <DismEventArgs> progress
     ) => Task.Run <Task>(async() => await this.UnmountAsync(options, commit, progress)).Wait();
示例#5
0
 public void Unmount(
     ImageCommitOptions options,
     bool commit
     ) => Task.Run <Task>(async() => await this.UnmountAsync(options, commit)).Wait();
示例#6
0
 public Task CommitChangesAsync(
     ImageCommitOptions options,
     [CanBeNull] IProgress <DismEventArgs> progress
     ) => this.CommitChangesAsync(options, CancellationToken.None, progress);
示例#7
0
 public Task CommitChangesAsync(
     ImageCommitOptions options,
     CancellationToken cancellationToken
     ) => this.CommitChangesAsync(options, cancellationToken, null);