(실제 제목은 " 'System.Runtime.CompilerServices.VoidTaskResult]'형식의 개체를 'System.Runtime.CompilerServices.askTaskResult'형식으로 캐스팅 할 수없는 이유는 'System.Runtime .CompilerServices.INotifyCompletion '는 "그러나 불행하게도이에 유래 너무 깁니다. :)작업 반환 메서드를 기다리는 중 InvalidCastException이 발생하는 이유는 무엇입니까?
안녕,
await
에 내 방법의 실행을 시도 할 때 정말 독특한 문제를 얻고있다. 호출하는 코드는이 (발췌)과 같습니다
private async Task DownloadAddonFileAsync(dynamic addon, dynamic file, string targetFolder)
{
// ...
await DownloadFileAsync(file, targetFolder, uri);
을 DownloadFileAsync은 다음과 같습니다
protected async Task DownloadFileAsync(dynamic file, string targetFolder, string uri)
{
// ...
var fileBytes = await AppLoaderRestClient.GetAsync<byte[]>(uri);
AppLoaderRestClient.GetAsync(), 차례 차례로, 다음과 같습니다
public static async Task<T> GetAsync<T>(string uri)
{
// ...
if (typeof (T) == typeof (byte[]))
{
var result = await webClient.DownloadDataTaskAsync(uri);
return (T) (object) result;
}
그래서 여기에는 실제로 체인의 작업이 있습니다. "내부"작업은 호출자에게 전파되어 Tas로 변환 된 작업입니다. k (즉, 결과가없는 태스크). 이 문제로 인해이 문제가 발생할 수 있다고 생각합니까? 나는이에 가장 바깥 쪽 코드를 변경하는 경우
는 :
var task = DownloadFileAsync(file, targetFolder, uri);
task.Wait();
를 ... 그것은 완벽하게 작동합니다. 왜?