何时使用Task.Run

本文关键字:Run Task 何时使 | 更新日期: 2023-09-27 18:24:07

我希望有一个后台进程(控制台应用程序)可以无限期地读取消息队列。

这是Task.Run的正确用法吗?

do
{
    Task.Run(() =>
    {
        using (var client = new QueueMessageClient())
        {
            var result = client.GetMessages();
            // Do something with the resulting messages
            Parallel.ForEach(result.Messages, message =>
            {
            });
        }
    });
} while (true);

何时使用Task.Run

不确定您要做什么,但循环可能应该在lambda内部(以及using块内部),而不是在它周围…否则将有数千个线程读取消息队列。

Task.Run(() =>
{
    using (var client = new QueueMessageClient())
    {
        do
        {
            var result = client.GetMessages();
            // Do something with the resulting messages
            Parallel.ForEach(result.Messages, message =>
            {
            });
        } while (true);
    }
});