小编Gra*_*lov的帖子

添加Fakes Assembly选项缺失

我正在尝试Microsoft Fakes在我的解决方案中设置的单元测试项目中运行并运行.

由于某种原因,Add Fakes Assembly缺少选项,这意味着我无法创建程序集的模型.由于这是添加Microsoft.QualityTools.Testing.Fakes程序集的唯一替代方法,因此我也无法使用该Shim功能.

我最近安装Visual Studio 2012 Professional并安装了更新3,这是第一次进入Visual Studio 2012.我没有改变任何设置.虽然我已安装ReSharper,但这可能是罪魁祸首吗?

vs-unit-testing-framework microsoft-fakes visual-studio-2012

8
推荐指数
1
解决办法
1万
查看次数

这些等待方法有什么区别?

我正在研究C#中的一些异步编程,并想知道这些函数之间的区别在于它们完全相同并且都是等待的.

public Task<Bar> GetBar(string fooId)
{
    return Task.Run(() =>
    {
        var fooService = new FooService();
        var bar = fooService.GetBar(fooId);
        return bar;
    });
}

public Task<Bar> GetBar(string fooId)
{
    var fooService = new FooService();
    var bar = fooService.GetBar(fooId);
    return Task.FromResult(bar)
}

public async Task<Bar> GetBar(string fooId)
{
    return await Task.Run(() =>
    {
        var fooService = new FooService();
        var bar = fooService.GetBar(fooId);
        return bar;
    });
}
Run Code Online (Sandbox Code Playgroud)

我的猜测是,第一种是正确的做事方式,并且在您尝试从返回的Task获取结果之前,代码不会执行.

在第二种情况下,代码在调用时执行,结果存储在返回的任务中.

第三种有点像第二种?代码是在调用时执行的,Task.Run的结果是返回?在这种情况下,这个函数会有点愚蠢吗?

我是对的还是离开的?

c# asynchronous task async-await

6
推荐指数
1
解决办法
163
查看次数