Publication de la première version fonctionnelle de l’assistant Flickr

Ça y est, la 1ère version de l’assistant d’envoi de photos vers Flickr est enfin terminée. Vous pouvez l’installer à partir de cette adresse :
http://www.ilp-web.net/projets/envoiflickr/

Dans cette version, je n’utilise plus un Thread pour l’envoi des images, mais un BackgroundWorker comme conseillé sur le forum de Developpez.com.

Voici des extraits du code de mon BackgroundWorker :

La déclaration :

        // Déclaration du BackgroundWorker
        private BackgroundWorker transfertFlickr;

L’initialisation :

        public MainWindow()
        {
            InitializeComponent();

            // Charge le dossier Images par défaut
            txtDossier.Text = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);

            // Création du BackgroundWorker
            transfertFlickr = new BackgroundWorker();

            // Indique la fonction à traiter lors du déclanchement de l'évenement DoWork
            transfertFlickr.DoWork += new DoWorkEventHandler(EnvoiFlickr);

            // Indique la fonction de traitement lors du déclanchement de l'évenement indiquant un changement de progression
            transfertFlickr.ProgressChanged += new ProgressChangedEventHandler(flickrProgressionEnvoiTotal);
            transfertFlickr.WorkerReportsProgress = true;

            // Indique que le BackgroundWorker peut être interrompu
            transfertFlickr.WorkerSupportsCancellation = true;

            // Indique la fonction à exécuter à la fin du transfert
            transfertFlickr.RunWorkerCompleted += new RunWorkerCompletedEventHandler(transfertFlickr_RunWorkerCompleted);

            // Paramètre la fonction gérant la progression de l'envoi
            conFlickr.OnUploadProgress += new EventHandler<UploadProgressEventArgs>(flickrProgressionEnvoiPhoto);
        }

Le démarrage :

            // Lance le BackgroundWorker
            transfertFlickr.RunWorkerAsync();

L’utilisation :

        // Fonction de traitement de l'envoi vers Flickr
        private void EnvoiFlickr(object data, DoWorkEventArgs e)
        {
            String photoId = String.Empty;
            int i = 0;

            foreach (String image in listeImages)
            {
                if (!transfertFlickr.CancellationPending)
                {
                    try
                    {
                        // Indique au BackgroundWorker qu'il y a eu progression
                        transfertFlickr.ReportProgress(i);

                        // Envoi l'image sur Flickr
                        photoId = conFlickr.UploadPicture(image, tempTitre, tempDescription, String.Empty,
                            isPublic, isFamily, isFriend);
// …

La gestion de la progression :

        // Fonction appelée lors de la progression de l'envoi total
        private void flickrProgressionEnvoiTotal(object sender, ProgressChangedEventArgs e)
        {
            // Mise à jour de la ProgressBar
            pbProgressionTotal.Value = e.ProgressPercentage + 1;
            taskBarItemInfo.ProgressValue = (e.ProgressPercentage + 1) / pbProgressionTotal.Maximum;

            // Mise à jour de la sélection dans la liste
            lbEnvoi.SelectedIndex = e.ProgressPercentage;
        }

Et voilà :-). Mise à part que je n’arrive toujours pas à récupérer la progression de l’envoi de chaque photo.

Le code source est toujours disponible sur GitHub à l’adresse :
GitHub https://github.com/ILPlais/EnvoiFlickr

Publicités

~ par ILP sur 8 décembre 2012.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

 
%d blogueurs aiment cette page :