我写了下面的代码,用于向我的机器人发送照片,但在我的信息流中,我有两个读写异常,我的照片没有发送。
我想也许是因为这个错误,但我无法修复它:
的异常
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/pressed" /> <item android:state_focused="false" android:drawable="@drawable/normal" /> </selector>
抛出类型&#39; System.InvalidOperationException&#39;
stream.ReadTimeout
答案 0 :(得分:8)
此异常的原因可能是您在启动任务后立即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
完成后。