我在下面编写了将照片发送到我的机器人的代码,但是在我的信息流中,我有两个读写异常(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/

10-11 23:09
查看更多