小编syn*_*cis的帖子

Async/Await使用Task.Run异步启动新线程吗?

我已经阅读了很多文章,但仍然无法理解这一部分.

考虑以下代码:

    private async void button1_Click(object sender, EventArgs e)
    {
        await Dosomething();
    }

    private async Task<string> Dosomething()
    {
        await Task.Run((() => "Do Work"));
        return "I am done";
    }
Run Code Online (Sandbox Code Playgroud)

第一个问题:

当我单击按钮时,它将调用DoSomething并等待通过调用Task.Run(如果我没有记错)从线程池创建线程的任务,并且所有这些都是异步运行的.所以我实现了创建一个完成我的工作但是异步执行的线程?但是考虑到我不需要任何结果,我只是希望在没有得到任何结果的情况下完成工作,是否真的需要使用async/await,如果是这样,怎么样?

第二个问题:

在异步运行线程时,它是如何工作的?它是在主UI上运行但是在单独的线程上运行还是在单独的线程上运行并且在该方法中是异步的?

c# multithreading async-await

35
推荐指数
3
解决办法
4万
查看次数

标签 统计

async-await ×1

c# ×1

multithreading ×1