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

时间:2017-03-28 12:01:33

标签: c# bots telegram telegram-bot

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

我想也许是因为这个错误,但我无法修复它:

  

<?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

1 个答案:

答案 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完成后。