Bonjour à tous !
Lorsque je tente de sauvegarder un Stream de manière asynchrone j'obtiens une exception ArgumentException "Parameter is not valid" lors de l'utilisation de la méthode Image.FromStream.
Voici le code de la méthode saveCacheImage
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 // Cette partie récupère la tile depuis le serveur et la // sauvegarde de manière asynchrone sur le disque BitmapImage tile = await downloadTile(name, offX, offY); saveCacheImage(tile.StreamSource, name); return tile;
L'exception est générée au niveau du FromStream. A noter que l'exception est déclenchée uniquement lors de l'utilisation de l’asynchrone. Lorsque je retire le Task.Run je n'ai plus de problème.
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 // Sauvegarde un stream en image de manère asychrone private static void saveCacheImage(Stream stream, string name) { Task.Run(() => { try { using (Image tile = Image.FromStream(stream)) // EXCEPTION { tile.Save(name, ImageFormat.Png); } } catch { } }); }
Après de nombreuses recherches sur les forums et divers sites, je me suis rendu compte que ce problème était très fréquent et qu'aucune solution ne marchait.
Merci d'avance !
Partager