using System;
namespace Developpez.Dotnet.System
{
///
/// Représente la méthode qui gère l'évènement ProgressChanged de la classe FileOperationBase
///
/// Source de l'évènement
/// Données de l'évènement
public delegate void FileOperationProgressEventHandler(object sender, FileOperationProgressEventArgs e);
///
/// Types d'opération de fichier
///
public enum FileOperationType
{
///
/// Déplacement de fichier
///
Move,
///
/// Copie de fichier
///
Copy
}
///
/// Actions possibles à effectuer lorsque l'opération de copie
/// ou de déplacement de fichier signale sa progression
///
public enum FileOperationProgressAction
{
///
/// Continuer l'opération normalement
///
Continue = 0,
///
/// Annuler l'opération. Le fichier de destination est supprimé.
///
Cancel = 1,
///
/// Arrête l'opération. Le fichier de destination est conservé.
///
Stop = 2,
///
/// Continue l'opération, mais arrête de signaler la progression
///
Quiet = 3
}
///
/// Fournit des données pour l'évènement ProgressChanged de la classe FileOperationBase.
///
public class FileOperationProgressEventArgs : EventArgs
{
internal FileOperationProgressEventArgs(
FileOperationType operationType,
string source,
string destination,
long transferredBytes,
long totalBytes,
TimeSpan elapsed,
long currentSpeed)
{
OperationType = operationType;
Source = source;
Destination = destination;
TransferredBytes = transferredBytes;
TotalBytes = totalBytes;
Elapsed = elapsed;
CurrentSpeed = currentSpeed;
Action = FileOperationProgressAction.Continue;
}
///
/// Type d'opération
///
public FileOperationType OperationType { get; private set; }
///
/// Fichier source
///
public string Source { get; private set; }
///
/// Fichier de destination
///
public string Destination { get; private set; }
///
/// Nombre d'octets déjà transférés
///
public long TransferredBytes { get; private set; }
///
/// Nombre total d'octets à transférer
///
public long TotalBytes { get; private set; }
///
/// Temps écoulé depuis le début de l'opération
///
public TimeSpan Elapsed { get; set; }
///
/// Vitesse de transfert actuelle en octets par seconde
///
public long CurrentSpeed { get; set; }
///
/// Renvoie le pourcentage du tranfert déjà effectué
///
public double PercentDone
{
get
{
return 100.0 * TransferredBytes / TotalBytes;
}
}
///
/// Renvoie ou définit une valeur indiquand comment l'opération doit se poursuivre.
///
public FileOperationProgressAction Action { get; set; }
}
}