相关疑难解决方法(0)

我什么时候会使用Task.Yield()?

我正在使用异步/等待和Task很多,但从来没有使用过Task.Yield(),说实话,即使有所有的解释,我不明白为什么我需要这种方法.

有人可以在Yield()需要的地方举个好例子吗?

c# async-await

196
推荐指数
4
解决办法
5万
查看次数

Task.Yield - 真实用法?

我一直在阅读有关Task.Yield,而且作为一名JavaScript开发,我可以告诉大家,就是它的工作是 完全相同一样setTimeout(function (){...},0);在让主单线程处理又名其他的东西方面:

"不要把所有的力量从时间上释放出来 - 所以其他人也会有一些......"

在js中,它特别适用于长循环.(不要让浏览器冻结......)

但我在这里看到了这个例子:

public static async Task < int > FindSeriesSum(int i1)
{
    int sum = 0;
    for (int i = 0; i < i1; i++)
    {
        sum += i;
        if (i % 1000 == 0) ( after a bulk , release power to main thread)
            await Task.Yield();
    }

    return sum;
}
Run Code Online (Sandbox Code Playgroud)

作为JS程序员,我可以理解他们在这里做了什么.

但作为一名C#程序员,我问自己:为什么不为它开一个任务呢?

 public static async Task < int > FindSeriesSum(int i1)
    {
         //do something.... …
Run Code Online (Sandbox Code Playgroud)

c# multithreading async-await c#-5.0 .net-4.5

38
推荐指数
3
解决办法
2万
查看次数

标签 统计

async-await ×2

c# ×2

.net-4.5 ×1

c#-5.0 ×1

multithreading ×1