我们目前正在重构我们项目的各个部分上下异步,是的!
由于我们的理解不同,我和同事(让我们称他为吉姆)对于我们的异步/等待代码将如何执行以及编写它的方式有不同的看法.
以下是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)
我的理解是:因为上面的服务furniture和appliance服务中的方法都需要House,所以House在继续之前它们会等待可用.然后,两个需要的方法House都会运行,但第二个方法(GetAppliancesForHouse)不会等到第一个方法在开始之前完成.
吉姆的理解是:我们应该只在需要时才等待这两种方法.这样他们就会彼此平行.他认为按照我的方式做,将导致第二种方法等待第一种方法,即:GetAppliancesForHouse等待GetFurnitureForHouse.
这些理解中的任何一个是否正确?或者我们一直在进行弥补?我们何时应该等待?
我正在使用dapper.net而且我已经connection.Execute为我Delete和Update声明包装了.
public virtual void Update(TEntity entity)
{
IDbConnection connection = connectionService.Connection;
connection.Execute(UpdateQuery, entity, connectionService.Transaction);
}
Run Code Online (Sandbox Code Playgroud)
当我来使用它时,我想通过捕获异常而不仅仅是一般来知道它是否失败Exception.抛出哪些(如果有的话)异常?我会假设SqlException,但是前任经理教会我什么都不做.
任何人都可以指出我在哪里找到这些信息的正确方向?
我正在使用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) 我发生错误时会生成一封电子邮件.我正在使用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"获取换行符.