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.

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;
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
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 { }
     });
}
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.

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 !