当前位置: 首页 > 知识库问答 >
问题:

异步等待持久警告

陈瀚
2023-03-14

我得到警告“这个异步方法缺少'await'运算符,将同步运行。考虑使用'await'运算符来等待非阻塞API调用,或者使用'await task.run(...)‘来在后台线程上执行CPU绑定的工作。虽然这听起来很明显,但我认为我已经被覆盖了,因为我运行所有进程,并在我的processFiles方法中有一个await任务。Whenall()。我需要用不同的方式来做这件事吗?如果有任何想法,我将不胜感激。

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Data.SqlClient;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.IO;


    namespace ProcessFiles
    {
        public partial class ProcessFiles : Form 
        {
            public ProcessFiles(int userLevel, int userID)
            {
            }

            private void btnProcess_Click(object sender, EventArgs e)
            {
                processFiles();

            }

            async Task<int> processFiles()
            {
                var processingTasks = new List<Task>();
                foreach (string fileName in listBox1.Items)
                {
                    processingTasks.Add(process012(fileName));
                    processingTasks.Add(process123(fileName));
                    processingTasks.Add(process234(fileName));

                }
                await Task.WhenAll(processingTasks);
                return (1);
            }


            async Task<int> process173(string fileName)
            {
                return (retVal);

            }

            async Task<int> process032(string fileName)
            {
                return (retVal);
            }

            async Task<int> process018(string fileName)
            {
                return (retVal);
            }

共有1个答案

诸葛品
2023-03-14

无需在processXXX方法中使用异步任务,只需返回Task 即可。您将在main processFiles()方法中等待任务:

        private async void btnProcess_Click(object sender, EventArgs e)
        {
            await processFiles();
        }

        async Task<int> processFiles()
        {
            var processingTasks = new List<Task>();
            foreach (string fileName in listBox1.Items)
            {
                processingTasks.Add(process012(fileName));
                processingTasks.Add(process123(fileName));
                processingTasks.Add(process234(fileName));

            }
            await Task.WhenAll(processingTasks);
            return (1);
        }


        Task<int> process173(string fileName)
        {
            return Task.FromResult(retVal)
        }

        Task<int> process032(string fileName)
        {
            return Task.FromResult(retVal)
        }

        Task<int> process018(string fileName)
        {
           return Task.FromResult(retVal)
        }
 类似资料:
  • 我试图在react/electron项目中使用async/await,但它不起作用。我想要的是获取docker容器状态列表。但是安慰。日志(列表)返回未定义的。 有人能帮我吗?:)

  • 问题内容: 我正在将JSHint用于JavaScript项目(带有Visual Studio Code)。在此项目中,我使用async / await,JSHint将其突出显示为错误。 我尝试设置jshint,但似乎“ esversion”的最大版本为6。 jshint支持异步/等待吗?如果可以,如何打开它?如果没有,是否有任何解决方法? 问题答案: 更新(2019年2月) :从2.10.1版本开

  • 我正在尝试将数据库调用移出控制器,以清理并使其可测试。当它们在控制器中时,一切都会顺利进行。我将它们移出控制器,并添加了一个异步,以确保我们等待。否则,我将调用的中的函数。现在,一旦我使用async/await,控制器中的函数就会认为没有用户,因为它没有等待。 有几个关于异步等待的SO问题,但我没有找到一个解决我的问题。我确实验证了返回了我的用户,并添加了控制台日志来显示路径。 节点猫鼬异步等待似

  • 我通读了Dart/flatter中的Async/Await/then,试图理解为什么aysnc函数中的Await不会等到完成后再继续。在我的UI中,有一个按钮调用一个异步方法来返回一个位置,该位置总是返回null,并且不等待函数完成。 该函数将调用推送到一个新的UI页面,该页面选择一个位置,并应返回一个结果。如何使该函数等待结果?我不是在使用异步吗?

  • 问题内容: 我使用Node.js和TypeScript,并且使用。这是我的测试用例: 我想为整个功能设置一个超时时间。即如果要花费2秒,花费0.5秒,花费5秒,我想在3秒钟后让我抛出错误的超时。 正常调用是一个问题,因为范围丢失了: 而且我不能用普通的方式抓住它: 有关如何解决的任何想法? 问题答案: 您可以使用超时: 您必须将其包装在诺言中才能使用。

  • 然后我有了调用webAPI的dataLayer,它看起来像这样。为了简单起见,我直接使用。result。 我的问题是,我看到一些教程说我们应该避免使用。result,因为它可能会导致死锁。我不确定在我的情况下是否需要使用Async/await?如果我确实需要,我知道我应该一直异步,但我确实希望我的controlLayer是同步的,因为我有其他层调用controlLayer的函数,我不希望所有层的函