使用任务时不同 returns

Different returns when using task

我有一个带有异步方法的应用程序,它必须 return 一个 List from List ,问题是 return

中发生转换错误

Cannot implicitly convert type 'System.Collections.Generic.List[]' to 'System.Collections.Generic.List'

代码是这样的

private async Task<List<IWebElement>> Acessar(IWebDriver driver, string data)
    {

        var acessar = Task.Factory.StartNew(() =>
        {
            LoginNgin.Login(config.User, config.Password, driver);

            RelatoriosEstaticos.AbrirRelatoriosEstaticos(driver);

            RelatoriosEstaticos.AbrirDataAtual(driver, data);

            var links = ListArquivos.ListaLinksDownlaod(driver);

            m_ProgressBar.Invoke(new AtualizarProgressCallBack(AtualizarProgress),
            new object[] {links.Count()});

            return links;
        });

        return await Task.WhenAll(acessar) //Error here;

    }

最奇怪的是,如果我return直接方法,不赋值变量,就不会出现这个错误。如下

        private async Task<List<IWebElement>> AcessarNgin(IWebDriver driver, string data)
    {

        var acessar = Task.Factory.StartNew(() =>
        {
            LoginNgin.Login(config.User, config.Password, driver);

            RelatoriosEstaticos.AbrirRelatoriosEstaticos(driver);

            RelatoriosEstaticos.AbrirDataAtual(driver, data);

            return ListArquivos.ListaLinksDownlaod(driver);

            m_ProgressBar.Invoke(new AtualizarProgressCallBack(AtualizarProgress),
            new object[] {links.Count()});

        });

        return await Task.WhenAll(acessar);

    }

只有我不能这样做,因为我需要给一个.Count()做别的事情。

问题是,您正在 return 的 links 对象拥有自己的 List<T> 对象。但是 Task.WhenAll method 需要一个任务列表或一个可枚举的列表,并将 return 每次调用的结果列表。我认为,您根本不必使用 Task.WhenAll(...),而是 Task.Run(...),因为您只有一个任务。