locked
Telecharger un fichier grace à un background agent RRS feed

  • Question

  • Bonjour,

    Je suis en train de développer une application permettant de télécharger fréquemment une image d'une webcam. Je souhaite effectuer le téléchargement en tache de fond grâce aux background agents (bien que je connaisse les limitations des 25sec hic!)

    Pour ce faire j'ai un bout de code que j'ai pu testé via un bouton dans une page classique, j'ai intégré ce code dans OnInvoke(ScheduledTask task) mais cependant cela ne produit rien. J'ai testé pour vérifier que j'appelle bien OnInvoke via une notification et cela fonctionne !

    Avez vous deja rencontré ce type de problème? je vais essayer de faire du debug pour nourrir ma question de plus d’éléments

    Ci dessous mon code qui fonctionne dans une page xaml:

    var _webClient = new WebClient();
                _webClient.OpenReadCompleted += (s1, e1) =>
                {
                    if (e1.Error == null)
                    {
    
                        var store = IsolatedStorageFile.GetUserStoreForApplication();
                        store.CreateDirectory("webcam");
                        long fileLen = 0;
                        System.IO.FileMode mode;
                        
                        mode = FileMode.Create;
                        try
                        {
                            using (var isfs = new IsolatedStorageFileStream("Shared\\ShellContent\\webcam.jpg", mode, store))
                            {
    
                                fileLen = e1.Result.Length;
                                byte[] b = new byte[fileLen];
                                e1.Result.Read(b, 0, b.Length);
                                isfs.Write(b, 0, b.Length);
                                isfs.Flush();
                                isfs.Close();
                                System.Console.Write("file length:" + fileLen.ToString());
                            }
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show("store:" + ex.Message);
                        }
                        finally
                        {
    
                            // isfs.Close();
                        }
    
    
                        //Redimensionnement
                        if (fileLen > 70000)
                        {
                            
                        }
    
                    }
                };
                _webClient.OpenReadAsync(new Uri(@"http://www.novaduo.com/done/webcam.php"));


    mardi 10 avril 2012 21:22

Réponses

  • A mon avis tu appelles NotifyComplete beaucoup trop tot, avant même que ton webclient démarre

    Dès que NotifyComplete est appelé, le process se tue, donc tu n'as jamais ton résultat.


    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue

    mercredi 11 avril 2012 09:08
  • oui mets le après le traitement d'images ;)

    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue

    • Marqué comme réponse canssens mercredi 11 avril 2012 18:55
    mercredi 11 avril 2012 12:06

Toutes les réponses

  • A mon avis tu appelles NotifyComplete beaucoup trop tot, avant même que ton webclient démarre

    Dès que NotifyComplete est appelé, le process se tue, donc tu n'as jamais ton résultat.


    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue

    mercredi 11 avril 2012 09:08
  • En effet je remarque que mon appel est asynchrone (OpenReadAsync). Est il possible de réaliser un appel synchrone?

    Sinon je vais mettre mon notifyComplete a l'intérieur de mon traitement de l'image.

    mercredi 11 avril 2012 09:25
  • oui mets le après le traitement d'images ;)

    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue

    • Marqué comme réponse canssens mercredi 11 avril 2012 18:55
    mercredi 11 avril 2012 12:06
  • Hello,

    J'ai eu le même soucis et je ne comprenais pas pour qu'elle raison ma méthode pour récupérer des données via un WebClient n'aboutissait pas. Cela ne pouvait pas durer plus de 25sec.

    En tout cas merci de vos réponses^^

    lundi 25 mars 2013 17:48