'stream.ReadTimeout'抛出了'System.InvalidOperationException'类型的异常,将照片发送到电报机器人

Mar*_*nia 8 c# bots telegram telegram-bot

我写了下面的代码,用于向我的机器人发送照片,但在我的信息流中,我有两个例外的读写,我的照片没有发送.

我想也许原因是这个错误,但我无法解决它:

stream.ReadTimeout 抛出了'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));
}
Run Code Online (Sandbox Code Playgroud)

Ren*_*ogt 8

这样做的原因是例外可能是你Disposestream启动任务后,立刻.

using语句调用Disposestream实例时执行离开此块.您可以删除此using声明,或者 - 如果您的方法已经是async- 您可以只是await调用SendPhotoAsync().没有理由使用另一个线程Task.Run():

using (var stream = System.IO.File.Open("a.jpg", FileMode.Open))
{
    var fileToSend = new FileToSend("a.jpg", stream);
    await bot.SendPhotoAsync(u.Message.Chat.Id, fileToSend).ConfigureAwait(false);
}
Run Code Online (Sandbox Code Playgroud)

编译器为此await调用创建的状态机负责处理语句的finallyusing(stream.Dispose()将在何处调用)仅在Task返回的SendPhotoAsync完成后执行.