我在下面编写了将照片发送到我的机器人的代码,但是在我的信息流中,我有两个读写异常(exception),并且我的照片未发送。
我认为可能是此错误的原因,但我无法解决:
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));
}
最佳答案
发生此异常的原因可能是您在开始任务后立即对Dispose
进行了stream
编码。
当执行离开此块时,using
语句在Dispose
实例上调用stream
。您可以删除此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);
}
编译器为此
await
调用创建的状态机注意,仅在finally
返回的using
完成后才执行stream.Dispose()
语句的Task
块(将在其中调用SendPhotoAsync
)。关于c# - 'stream.ReadTimeout'抛出了 'System.InvalidOperationException'类型的异常,将照片发送到电报机器人,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43069026/