du ruisseau.ReadTimeout' a jeté une exception de type 'System.InvalidOperationException' envoi de photo pour le télégramme de bot
J'ai écrit ci-dessous le code pour envoyer une photo à mon bot, mais dans mon flux, j'ai deux exceptions pour les lire et à écrire et ma photo n'a pas été envoyer.
Je pense que peut-être la raison de cette erreur, mais je ne pouvais pas résoudre le problème:
stream.ReadTimeout
a déclenché une exception de type 'System.InvalidOperationException'
using (var stream = System.IO.File.Open("a.jpg", FileMode.Open))
{
var fileToSend = new FileToSend("a.jpg", stream);
Task.Run(() => bot.SendPhotoAsync(u.Message.Chat.Id, fileToSend).ConfigureAwait(false));
}
OriginalL'auteur Mary Qafarinia | 2017-03-28
Vous devez vous connecter pour publier un commentaire.
La raison de cette exception est sans doute que vous
Dispose
lastream
immédiatement après le démarrage de la tâche.La
using
déclaration appelleDispose
sur lestream
exemple lors de l'exécution des feuilles de ce bloc. Vous pouvez supprimer cetteusing
déclaration ou - si votre méthode est déjàasync
- vous pouvez simplementawait
l'appel àSendPhotoAsync()
. Il n'y a pas de raison d'utiliser un autre thread avecTask.Run()
:La machine d'état créés par le compilateur pour ce
await
appel qui prend en charge lefinally
bloc de lausing
déclaration (oùstream.Dispose()
sera appelé) est exécutée seulement après laTask
retourné parSendPhotoAsync
est terminé.OriginalL'auteur René Vogt