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)
这样做的原因是例外可能是你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);
}
Run Code Online (Sandbox Code Playgroud)
编译器为此await调用创建的状态机负责处理语句的finally块using(stream.Dispose()将在何处调用)仅在Task返回的SendPhotoAsync完成后执行.