【问题标题】:'stream.ReadTimeout' threw an exception of type 'System.InvalidOperationException' sending photo to telegram bot“stream.ReadTimeout”引发了“System.InvalidOperationException”类型的异常,将照片发送到电报机器人
【发布时间】:2017-08-21 11:54:00
【问题描述】:

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

我想可能是这个错误的原因,但我无法修复它:

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));
}

【问题讨论】:

    标签: c# bots telegram telegram-bot


    【解决方案1】:

    这个异常的原因很可能是你Disposestream刚开始任务。

    当执行离开此块时,using 语句在 stream 实例上调用 Dispose。您可以删除此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 调用创建的状态机负责确保using 语句的finally 块(将调用stream.Dispose())仅在返回的Task 之后执行SendPhotoAsync 已完成。

    【讨论】:

      猜你喜欢
      • 2020-04-04
      • 2018-12-03
      • 2016-10-17
      • 1970-01-01
      • 1970-01-01
      • 2016-07-18
      • 2016-08-15
      • 1970-01-01
      • 2021-04-20
      相关资源
      最近更新 更多