Bonjour à tous,
Je n'arrive pas à trouver l'astuce !

J'ai une page sur laquelle j'ai un bouton d'upload.

L'idée est d'afficher un busyIndicator lorsque l'upload commence.

J'ai tenté différentes approches (code Behind, binding MVVM, messenger) sans résultat. J'ai toujours le même soucis. Le statut du busyIndicator ne change pas au moment ou je lance l'upload (Busy.IsBusy=true juste après le test sur le showDialog() de l'openFileDIalog).

Quelqu'un aurait-il une piste de recherche ?

Merci d'avance,
Frédéric

Ci-après le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
 private void button1_Click(object sender, RoutedEventArgs e)
 
        {
 
            this.textBlock2.Text = string.Empty;
 
            OpenFileDialog openFIleDialog = new OpenFileDialog();
 
            openFIleDialog.Filter = "All Image Files ( JPEG,GIF,BMP,PNG)|*.jpg;*.jpeg;*.gif;*.bmp;*.png|JPEG Files ( *.jpg;*.jpeg )|*.jpg;*.jpeg|GIF Files ( *.gif )|*.gif|BMP Files ( *.bmp )|*.bmp|PNG Files ( *.png )|*.png";
 
            openFIleDialog.FilterIndex = 1;
 
            openFIleDialog.Multiselect = false;
 
            string str = string.Empty;
 
            if (openFIleDialog.ShowDialog() == true)
 
            {
                Busy.IsBusy = true;
 
                foreach (var file in openFIleDialog.Files)
 
                {
 
                    using (Stream fileStream = GetFileData(file.OpenRead()))
 
                    {
                        // sequence resizing
                        DecodedJpeg origJpeg = new JpegDecoder(fileStream).Decode();
 
                        if (ImageResizer.ResizeNeeded(origJpeg.Image, 1024))
                        {
                            //resize de l'image
                            DecodedJpeg resizedJpeg = new DecodedJpeg(new ImageResizer(origJpeg.Image).Resize(1024, ResamplingFilters.NearestNeighbor), origJpeg.MetaHeaders);
                            //Encodage de resized image                
                            MemoryStream resizedStream = new MemoryStream();
                            new JpegEncoder(resizedJpeg, 100, resizedStream).Encode();
                            //Read resized stream to byte array                
                            //resizedStream.Seek(0, SeekOrigin.Begin);
                            StreamResourceInfo streamResourceFile = new StreamResourceInfo(resizedStream, null);
                            byte[] data = new byte[streamResourceFile.Stream.Length];
                            //resizedStream.Read(data, 0, Convert.ToInt32(resizedStream.Length));
                            streamResourceFile.Stream.Read(data, 0, (int)streamResourceFile.Stream.Length);
                            str = Convert.ToBase64String(data);
                        }
                        else
                        {
                            //Read original stream to byte array                
                            fileStream.Seek(0, SeekOrigin.Begin);
                            //data = new byte[fileStream.Length];
                            StreamResourceInfo streamResourceFile = new StreamResourceInfo(fileStream, null);
                            byte[] data = new byte[streamResourceFile.Stream.Length];
                            fileStream.Read(data, 0, Convert.ToInt32(fileStream.Length));
                            streamResourceFile.Stream.Read(data, 0, (int)streamResourceFile.Stream.Length);
                            str = Convert.ToBase64String(data);
                        }
 
 
 
 
 
                        WebClient oWebClient = new WebClient();
 
                        string fileName = Guid.NewGuid().ToString().Replace("-", "") + file.Extension;
 
                        oWebClient.UploadStringAsync(new Uri("http://localhost:49377/Uploader.ashx?file=" + fileName), null, str, fileName);
 
                        oWebClient.UploadProgressChanged += new UploadProgressChangedEventHandler(oWebClient_UploadtxtProgressChanged);
 
                        totalFilesToUpload += 1;
 
                        str = string.Empty;
 
 
                    }
 
                }
 
            }
 
        }
 
        System.IO.MemoryStream GetFileData(System.IO.Stream oFileStream)
 
        {
 
            oFileStream.Seek(0, System.IO.SeekOrigin.Begin);
 
            byte[] data = new byte[oFileStream.Length];
 
            oFileStream.Read(data, 0, (int)oFileStream.Length);
 
            return new System.IO.MemoryStream(data);
 
        }
 
        void oWebClient_UploadtxtProgressChanged(object sender, UploadProgressChangedEventArgs e)
 
        {
 
            totalFilesUploaded += 1;
 
            textBlock2.Text = !string.IsNullOrEmpty(textBlock2.Text) ? (int.Parse(textBlock2.Text) + e.BytesSent).ToString() : e.BytesSent.ToString();
 
            if (totalFilesUploaded == totalFilesToUpload)
 
            {             
 
                textBlock2.Text = totalFilesUploaded + " files uploaded successfully (" + textBlock2.Text + " bytes sent )";
 
            }
            Busy.IsBusy = false;
 
        }