相关疑难解决方法(0)

为什么在等待任务返回方法时出现InvalidCastException?

(问题的真正标题应该是"为什么我得到一个'无法播放'System.Runtime.CompilerServices.TaskAwaiter`1 [System.Runtime.CompilerServices.VoidTaskResult]'类型的对象'来键入'System.Runtime.CompilerServices .INotifyCompletion'",但遗憾的是这对StackOverflow来说太长了.:)

嗨,

在尝试await执行我的方法时,我遇到了非常奇怪的问题.调用代码看起来像这样(摘录):

    private async Task DownloadAddonFileAsync(dynamic addon, dynamic file, string targetFolder)
    {
        // ...
        await DownloadFileAsync(file, targetFolder, uri);
Run Code Online (Sandbox Code Playgroud)

DownloadFileAsync看起来像这样:

    protected async Task DownloadFileAsync(dynamic file, string targetFolder, string uri)
    {
        // ...
        var fileBytes = await AppLoaderRestClient.GetAsync<byte[]>(uri);
Run Code Online (Sandbox Code Playgroud)

反过来,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;
        }
Run Code Online (Sandbox Code Playgroud)

因此,这里实际上有一系列任务 - "内部"任务将是一个任务,然后将其传播到调用者,并转换为任务(即没有结果的任务).我认为这可能导致手头的问题?

如果我将最外面的代码更改为:

        var task = DownloadFileAsync(file, targetFolder, uri); …
Run Code Online (Sandbox Code Playgroud)

.net c# async-await c#-5.0

3
推荐指数
1
解决办法
1418
查看次数

标签 统计

.net ×1

async-await ×1

c# ×1

c#-5.0 ×1