相关疑难解决方法(0)

为什么在C#中使用Task <T>而不是ValueTask <T>?

从C#7.0开始,异步方法可以返回ValueTask <T>.解释说,当我们有缓存结果或通过同步代码模拟异步时,应该使用它.但是我仍然不明白使用ValueTask的问题是什么,或者实际上为什么async/await不是从一开始就使用值类型构建的.ValueTask何时无法完成这项工作?

c# asynchronous

146
推荐指数
5
解决办法
2万
查看次数

await Task <T>和Task <T> .Result有什么区别?

 public async Task<string> GetName(int id)
    {
        Task<string> nameTask =
            Task.Factory.StartNew(() => { return string.Format("Name matching id {0} = Developer", id); });
        return nameTask.Result;
    }
Run Code Online (Sandbox Code Playgroud)

在上面的方法return语句我使用Task.Result属性.

public async Task<string> GetName(int id)
    {
        Task<string> nameTask =
            Task.Factory.StartNew(() => { return string.Format("Name matching id {0} = Developer", id); });
        return await nameTask;
    }
Run Code Online (Sandbox Code Playgroud)

我在这里使用等待任务.如果我认为await将释放调用线程但是Task.Result将阻止它,我会不会错,它会是正确的吗?

c# multithreading async-await

41
推荐指数
2
解决办法
7624
查看次数

标签 统计

c# ×2

async-await ×1

asynchronous ×1

multithreading ×1