Fields (1) Methods (5) Properties (5)
Namespace: SchwabenCode.QuickIO.Transfer

Syntax

public class QuickIOTransferDirectoryCopyService : QuickIOTransferServiceBase

Basetype

Summary

Copy directory with progress monitoring

Example

Copy complete directory

class Program
{
static void Main( string[ ] args )
{
    const string sourceDirectory = @"C:\transfer_test\source";
    const string targetDirectory = @"C:\transfer_test\to";

    var service = new QuickIOTransferDirectoryCopyService( new QuickIODirectoryInfo( sourceDirectory ), targetDirectory, threadCount: 1, retryCount: 3, searchOption: SearchOption.AllDirectories, overwrite: true );

    //  Progress information
    service.Started += OnFileCopyStarted;
    service.Progress += OnFileProgressUpdate;
    service.Finished += OnFileCopyFinished;

    // Start progress
    service.Start( ); // Blocks thread until finished

    Console.WriteLine( "Finished" );
    Console.ReadKey( );
}

static void OnFileCopyFinished( object sender, QuickIOTransferFileCopyFinishedArgs e )
{
    Console.WriteLine( "Finished: " + e.SourcePath + " - MB/s: " + ( e.BytesPerSecond / 1024.0 / 1024.0 ).ToString( "0.0" ) );
}

static void OnFileCopyStarted( object sender, QuickIOTransferFileCopyStartedArgs e )
{
    Console.WriteLine( "Started: " + e.SourcePath + " to " + e.TargetPath + " (Bytes: " + e.TotalBytes + ")" );
}

static void OnFileProgressUpdate( object sender, QuickIOTransferFileCopyProgressArgs e )
{
    Console.WriteLine( "Progress: " + e.SourcePath + " - %: " + e.Percentage + " MB/s: " + ( e.BytesPerSecond / 1024.0 / 1024.0 ).ToString( "0.0" ) );
}
}

Uses

Fields

_running

thread safe indicator if copy is running

private  Boolean _running

Methods

public void QuickIOTransferDirectoryCopyService(QuickIODirectoryInfo sourceDirectoryInfo, String targetFullName, Int32 threadCount, Int32 retryCount, SearchOption searchOption, Boolean overwrite)

Parameters

sourceDirectoryInfo

QuickIODirectoryInfo

Directory to copy

targetFullName

String

Target fullname

threadCount

Int32

Copy Worker Counts. Use 1 on local systems. Use >2 with SMB shares

retryCount

Int32

Count of retries before copy is broken

searchOption

SearchOption

SearchOptionof deepth to copy

overwrite

Boolean

true to overwrite existing files

public void QuickIOTransferDirectoryCopyService(IQuickIOTransferObserver observer, QuickIODirectoryInfo sourceDirectoryInfo, String targetFullName, Int32 threadCount, Int32 retryCount, SearchOption searchOption, Boolean overwrite)

Parameters

observer

IQuickIOTransferObserver

Observer

sourceDirectoryInfo

QuickIODirectoryInfo

Directory to copy

targetFullName

String

Target fullname

threadCount

Int32

Copy Worker Counts. Use 1 on local systems. Use >2 with SMB shares

retryCount

Int32

Count of retries before copy is broken

searchOption

SearchOption

SearchOptionof deepth to copy

overwrite

Boolean

true to overwrite existing files

private InternalDirectoryTransferPrefences DetermineDirectoryTransferPrefences(QuickIODirectoryInfo sourceDirectoryInfo, String targetFullName, SearchOption searchOption, Boolean overwrite)

Start()

Starts the copy process. First it determines all content information of source. Then the target directory structure will be created before transfer begins

public void Start()

StartAsync()

Starts the copy process as task. First it determines all content information of source. Then the target directory structure will be created before transfer begins

public Task StartAsync()

Properties

IsRunning

true if copy process is running

public Boolean IsRunning { get; set; }

Overwrite

true to overwrite existing content

public Boolean Overwrite { get; set; }

SearchOption

Deepth to copy

public SearchOption SearchOption { get; set; }

SourceDirectoryInfo

Directory to copy

public QuickIODirectoryInfo SourceDirectoryInfo { get; set; }

TargetFullName

Target fullname

public String TargetFullName { get; set; }

Classdiagram

public classQuickIOTransferDirectoryCopyService_runningDetermineDirectoryTransferPrefencesStartStartAsyncQuickIOTransferDirectoryCopyServiceQuickIOTransferDirectoryCopyServiceIsRunning { get; set; }Overwrite { get; set; }SearchOption { get; set; }SourceDirectoryInfo { get; set; }TargetFullName { get; set; }public classQuickIOTransferServiceBase_jobQueue_jobQueueLock_maxBufferSize_maxJobRetryAttempts_maxWorkerCount_workerCountRemoveRequested_workerCountRemoveRequestedLock_workerShutdownLock_workerThreads_workerThreadsLockCancellationRequestedCompletedAddingRequestedJobDequeuedJobEnqueuedJobRequeuedJobRetryMaxReachedWorkerCreatedWorkerIsWaitingWorkerPickedJobWorkerShutdownWorkerStartedWorkerWokeUpAddWorkerCancelClearCompleteAddingCreateWorkersInternalAddInternalAddRangeInternalCreateNewWorkerInternalReSortLockedQueueInternalStartWorkerInternalWaitForNewQueueItemsJobExecuteSwitchOnCancellationRequestedOnCompletedAddingRequestedOnJobDequeuedOnJobEnqueuedOnJobRequeuedOnJobRetryMaxReachedOnWorkerCreatedOnWorkerIsWaitingOnWorkerPickedJobOnWorkerShutdownOnWorkerStartedOnWorkerWokeUpRemoveThreadRemoveWorkerStartConsumingStartWorkersStartWorkingWaitForFinishWakeUpSleepingWorkersQuickIOTransferServiceBaseQuickIOTransferServiceBaseAddingCompleted { get; set; }CancelRequested { get; set; }IsWorking { get; }MaxBufferSize { get; set; }MaxJobRetryAttempts { get; set; }MaxWorkerCount { get; set; }Observer { get; set; }PriorityComparer { get; set; }WorkerCount { get; }public static classQuickIODirectoryAddAttributeAddAttributeAddAttributeCopyCopyCreateCreateDeleteDeleteEnumerateDirectoriesEnumerateDirectoriesEnumerateDirectoriesEnumerateDirectoriesAsyncEnumerateDirectoriesAsyncEnumerateDirectoriesAsyncEnumerateDirectoryPathsEnumerateDirectoryPathsEnumerateDirectoryPathsEnumerateDirectoryPathsAsyncEnumerateDirectoryPathsAsyncEnumerateDirectoryPathsAsyncEnumerateFilePathsEnumerateFilePathsEnumerateFilePathsEnumerateFilePathsAsyncEnumerateFilePathsAsyncEnumerateFilePathsAsyncEnumerateFilesEnumerateFilesEnumerateFilesEnumerateFilesAsyncEnumerateFilesAsyncEnumerateFilesAsyncEnumerateFileSystemEntriesEnumerateFileSystemEntriesEnumerateFileSystemEntriesEnumerateFileSystemEntriesAsyncEnumerateFileSystemEntriesAsyncEnumerateFileSystemEntriesAsyncEnumerateFileSystemEntryPathsEnumerateFileSystemEntryPathsEnumerateFileSystemEntryPathsEnumerateFileSystemEntryPathsAsyncEnumerateFileSystemEntryPathsAsyncEnumerateFileSystemEntryPathsAsyncExistsExistsExistsGetAttributesGetAttributesGetAttributesGetCreationTimeGetCreationTimeGetCreationTimeGetCreationTimeUtcGetCreationTimeUtcGetCreationTimeUtcGetLastAccessTimeGetLastAccessTimeGetLastAccessTimeGetLastAccessTimeUtcGetLastAccessTimeUtcGetLastAccessTimeUtcGetLastWriteTimeGetLastWriteTimeGetLastWriteTimeGetLastWriteTimeUtcGetLastWriteTimeUtcGetLastWriteTimeUtcGetMetadastaAsyncGetMetadataGetMetadataGetMetadataGetMetadataAsyncGetMetadataAsyncGetMetadataAsyncGetStatisticsGetStatisticsGetStatisticsMoveRemoveAttributeRemoveAttributeRemoveAttributeSetAllFileTimesSetAllFileTimesSetAllFileTimesSetAllFileTimesUtcSetAllFileTimesUtcSetAllFileTimesUtcSetAttributesSetAttributesSetAttributesSetCreationTimeSetCreationTimeSetCreationTimeSetCreationTimeUtcSetCreationTimeUtcSetCreationTimeUtcSetLastAccessTimeSetLastAccessTimeSetLastAccessTimeSetLastAccessTimeUtcSetLastAccessTimeUtcSetLastAccessTimeUtcSetLastWriteTimeSetLastWriteTimeSetLastWriteTimeSetLastWriteTimeUtcSetLastWriteTimeUtcSetLastWriteTimeUtcpublic classQuickIOTransferServiceBase_jobQueue_jobQueueLock_maxBufferSize_maxJobRetryAttempts_maxWorkerCount_workerCountRemoveRequested_workerCountRemoveRequestedLock_workerShutdownLock_workerThreads_workerThreadsLockCancellationRequestedCompletedAddingRequestedJobDequeuedJobEnqueuedJobRequeuedJobRetryMaxReachedWorkerCreatedWorkerIsWaitingWorkerPickedJobWorkerShutdownWorkerStartedWorkerWokeUpAddWorkerCancelClearCompleteAddingCreateWorkersInternalAddInternalAddRangeInternalCreateNewWorkerInternalReSortLockedQueueInternalStartWorkerInternalWaitForNewQueueItemsJobExecuteSwitchOnCancellationRequestedOnCompletedAddingRequestedOnJobDequeuedOnJobEnqueuedOnJobRequeuedOnJobRetryMaxReachedOnWorkerCreatedOnWorkerIsWaitingOnWorkerPickedJobOnWorkerShutdownOnWorkerStartedOnWorkerWokeUpRemoveThreadRemoveWorkerStartConsumingStartWorkersStartWorkingWaitForFinishWakeUpSleepingWorkersQuickIOTransferServiceBaseQuickIOTransferServiceBaseAddingCompleted { get; set; }CancelRequested { get; set; }IsWorking { get; }MaxBufferSize { get; set; }MaxJobRetryAttempts { get; set; }MaxWorkerCount { get; set; }Observer { get; set; }PriorityComparer { get; set; }WorkerCount { get; }

save

reset

Drag to pan - Use Mousewheel + Ctrl to zoom