/// <summary>Returns the set of file ranges that have been downloaded.</summary>
/// <value>The file copy ranges that have been downloaded. Ranges will be merged together as much as possible. The ranges are ordered by offset.</value>
/// Size of the file in bytes. If the value is -1, the total size of the file has not been determined. BITS does not set this value if it cannot
/// determine the size of the file. For example, if the specified file or server does not exist, BITS cannot determine the size of the file. If you are
/// downloading ranges from a file, BytesTotal reflects the total number of bytes you want to download from the file.
/// </summary>
publiclongLength=>(long)CopyProgress.BytesTotal;
/// <summary>Retrieves the local name of the file.</summary>
/// For downloads, the value is TRUE if the file is available to the user; otherwise, the value is FALSE. Files are available to the user after calling
/// the <see cref="BackgroundCopyJob.Complete"/> method. If the <see cref="BackgroundCopyJob.Complete"/> method generates a transient error, those files
/// processed before the error occurred are available to the user; the others are not. Use the Completed property to determine if the file is available
/// to the user when Complete fails. For uploads, the value is TRUE when the file upload is complete; otherwise, the value is FALSE.
/// <summary>Retrieves the progress of the file transfer.</summary>
internalBG_FILE_PROGRESSCopyProgress=>iFile?.GetProgress()??thrownewInvalidOperationException("You can only get the CopyProgress on CurrentFileSet results.");
/// <summary>Adds a new set of file ranges to be prioritized for download.</summary>
/// <param name="ranges">
/// An array of file ranges to be downloaded. Requested ranges are allowed to overlap previously downloaded (or pending) ranges. Ranges are automatically
/// The length of the range, in bytes. Do not specify a zero byte length. To indicate that the range extends to the end of the file, specify <c>BG_LENGTH_TO_EOF</c>.