相关疑难解决方法(0)

运行多个异步任务并等待它们全部完成

我需要在控制台应用程序中运行多个异步任务,并在进一步处理之前等待它们全部完成.

那里有很多文章,但我读的越多越好.我已经阅读并理解了Task库的基本原理,但我显然错过了某处的链接.

我知道可以将任务链接起来,以便它们在另一个完成之后开始(这几乎是我读过的所有文章的场景),但我希望我的所有任务同时运行,我想知道一次他们都完成了.

对于这样的场景,最简单的实现是什么?

.net c# asynchronous task-parallel-library async-await

241
推荐指数
7
解决办法
22万
查看次数

几乎到处都可以使用async/await吗?

我目前正在编写用于个人用途的小型NodeJS CLI工具,我决定尝试使用Babel的ES7异步/等待功能.

它是一个网络工具,所以我显然有异步网络请求.我为request包写了一个简单的包装器:

export default function(options) {
    return new Promise(function(resolve, reject) {
        request({...options,
            followAllRedirects: true,
            headers: {
                "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0"
            }
        }, (error, response, body) => {
            if(error) {
                return reject(error);
            }
            resolve({response: response, body: body});
        });
    });
}
Run Code Online (Sandbox Code Playgroud)

现在我可以做点什么了

async function getGooglePage() {
    try {
        var r = await request({url: "http://google.com"});

        console.log(r.body);
        console.log("This will be printed in the end.")
    } catch(e) {
        console.log(e);
    }
}
getGooglePage();
Run Code Online (Sandbox Code Playgroud)

现在我有一个问题:我在许多地方提出要求,我必须将所有这些功能标记为async,这是一个好习惯吗?我的意思是我的代码中的几乎所有函数都应该是async因为我需要 …

javascript node.js async-await ecmascript-next

7
推荐指数
2
解决办法
1696
查看次数

使用async和await关键字的好处

我是C#中异步方法的新手.我已经读过这些关键字asyncawait通过异步某些方法帮助使程序更具响应性.我有这个片段:

第一道路

    public static void Main()
    {
        Console.WriteLine("Hello!! welcome to task application");
        Console.ReadKey();
        Task<string> ourtask = Task.Factory.StartNew<string>(() =>
        {
            return "Good Job";
        });
        ourtask.Wait();
        Console.WriteLine(ourtask.Result);
        Console.ReadKey();
    }
Run Code Online (Sandbox Code Playgroud)

第二种方式

 public static void Main()
        {
            Launch();
        }
        public static async void Launch()
        {
            Console.WriteLine("Hello!! welcome to task application");
            Console.ReadKey();
            Console.WriteLine(await GetMessage());
            Console.ReadKey();
        }

        public static Task<string> GetMessage()
        {
            return Task.Factory.StartNew<string>(() =>
                {
                    return "Good Job";
                });
        }
Run Code Online (Sandbox Code Playgroud)

我需要知道 :

  1. 这两种实现之间是否有区别(在并行性的概念中)?

  2. 如果我可以创建任务并等待它完成,那么使用asyncawait关键字有什么好处?

.net c# multithreading asynchronous task

6
推荐指数
3
解决办法
9870
查看次数