2017-03-28 2 views
3

아래 사진에 내 봇에 사진을 보내기위한 코드를 썼지 만 스트림에서 읽기 및 쓰기와 내 예외가 두 가지 있습니다. 사진이 전송되지 않았습니다.'stream.ReadTimeout'이 (가) 'System.InvalidOperationException'유형의 예외를 Throw하여 텔레 보봇에 사진 전송

나는 어쩌면 이유는이 오류라고 생각하지만, 나는 그것을 고칠 수 :

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

답변

3

이유 유형의 예외가 발생했습니다 이 예외는 아마 Disposestream 작업을 시작한 직후입니다.

using 문은이 블록을 실행할 때 stream 인스턴스에서 Dispose을 호출합니다. 이 using 문을 제거하거나 이미 방법이 async 인 경우 awaitSendPhotoAsync()으로 전화하면됩니다. 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); 
} 
( stream.Dispose()가 호출됩니다)에 using 문의 finally 블록은 실행

await 호출에 대해 컴파일러에 의해 생성 된 상태 머신 소요 관리 SendPhotoAsync에 의해 반환 된 Task 후에 완료되었습니다.

+0

감사합니다. 나를 위해 일했습니다. –