小编Jac*_*ger的帖子

我应该什么时候等待我的asyncs?

我们目前正在重构我们项目的各个部分上下异步,是的!

由于我们的理解不同,我和同事(让我们称他为吉姆)对于我们的异步/等待代码将如何执行以及编写它的方式有不同的看法.

以下是Jim写的示例方法:

public async Task<HouseModel> GetHouseModel(Guid houseId)
{
    House house = await _houseService.GetHouse(houseId);

    Task<IEnumerable<Furniture>> furniture = _furnitureService.GetFurnitureForHouse(house);

    Task<IEnumerable<Appliances>> appliances = _applianceService.GetAppliancesForHouse(house);

    return _houseModelFactory.MakeHouseModel(await furniture, await appliances);
}
Run Code Online (Sandbox Code Playgroud)

以及如何编写它的示例:

public async Task<HouseModel> GetHouseModel(Guid houseId)
{
    House house = await _houseService.GetHouse(houseId);

    IEnumerable<Furniture> furniture = await _furnitureService.GetFurnitureForHouse(house);

    IEnumerable<Appliances> appliances = await _applianceService.GetAppliancesForHouse(house);

    return _houseModelFactory.MakeHouseModel(furniture, appliances);
}
Run Code Online (Sandbox Code Playgroud)

我的理解是:因为上面的服务furnitureappliance服务中的方法都需要House,所以House在继续之前它们会等待可用.然后,两个需要的方法House都会运行,但第二个方法(GetAppliancesForHouse)不会等到第一个方法在开始之前完成.

吉姆的理解是:我们应该只在需要时才等待这两种方法.这样他们就会彼此平行.他认为按照我的方式做,将导致第二种方法等待第一种方法,即:GetAppliancesForHouse等待GetFurnitureForHouse.

这些理解中的任何一个是否正确?或者我们一直在进行弥补?我们何时应该等待?

.net c# async-await

48
推荐指数
2
解决办法
2144
查看次数

小巧玲珑.什么例外确实conn.Execute throw?

我正在使用dapper.net而且我已经connection.Execute为我DeleteUpdate声明包装了.

public virtual void Update(TEntity entity)
{
    IDbConnection connection = connectionService.Connection;

    connection.Execute(UpdateQuery, entity, connectionService.Transaction);
}
Run Code Online (Sandbox Code Playgroud)

当我来使用它时,我想通过捕获异常而不仅仅是一般来知道它是否失败Exception.抛出哪些(如果有的话)异常?我会假设SqlException,但是前任经理教会我什么都不做.

任何人都可以指出我在哪里找到这些信息的正确方向?

c# exception dapper

7
推荐指数
1
解决办法
5209
查看次数

从邮递员执行列表REST API时出现错误415不支持的媒体类型

我正在使用List REST API加载聚会数据。使用以下详细信息:

Request type : POST
URL : http://localhost:1512/rest/V1.0/list/Party
Authorization : Yes
Header : No Header information
Body : form Data ->xml file.
Run Code Online (Sandbox Code Playgroud)

当我发送请求时,我得到以下错误。你能帮我么。

http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/>
Error 415 Unsupported Media Type
Run Code Online (Sandbox Code Playgroud)

postman

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

StringBuilder.AppendLine()不会创建新行

我发生错误时会生成一封电子邮件.我正在使用StringBuilder.AppendLine()StringBuilder.AppendLine(String)建立电子邮件的正文,但是我的电子邮件正文显示为一个非常长的行,没有换行符.

例如:

Dim ErrorsStringBuilder As New StringBuilder
ErrorsStringBuilder.AppendLine(String.Format("Status : {0}  Message : {1}", Results.Status, Results.ErrorMessage))
ErrorsStringBuilder.AppendLine(String.Format("Failed : {0}  Total : {1}", Results.FailedCount, Results.TotalCount))
ErrorsStringBuilder.AppendLine("Batch #: " & Results.BatchNumber)
ErrorsStringBuilder.AppendLine()
ErrorsStringBuilder.AppendLine("Individual Errors:")
ErrorsStringBuilder.AppendLine()
For Each FailedRecord .......
  ErrorsStringBuilder.AppendLine(String.Format("Failed Record ID : {0}  Message : {1}", FailedRecord.ID, FailedRecord.ErrorText))
Next
Run Code Online (Sandbox Code Playgroud)

这是从MSDN为了描述.AppendLine().AppendLine(String)分别.

将默认行终止符追加到当前StringBuilder对象的末尾.

将指定字符串的副本后跟默认行终止符附加到当前StringBuilder对象的末尾.

我的问题是:为什么没有换行?为什么没有应用默认行终止符?我误解了描述吗?

PS.我确实看过这个问题,但没有解释原因.

而且我知道我可以使用System.Environment.NewLine"\n"获取换行符.

.net vb.net string email stringbuilder

2
推荐指数
1
解决办法
8704
查看次数

标签 统计

.net ×2

c# ×2

async-await ×1

dapper ×1

email ×1

exception ×1

postman ×1

string ×1

stringbuilder ×1

vb.net ×1