【发布时间】:2015-12-13 02:50:25
【问题描述】:
这是我在Calling an async method using a Task.Run seems wrong?发布的上一个问题的后续内容
我认为承包商编写的代码是错误的,但根据提供的答案,我现在想知道这是否是库的错。这个库公开了我需要使用的两种方法。一个返回一个“模板”,一个消耗这个模板的一部分(它在我的实现中无论如何)。但两者都是返回Tasks 的async 方法。
解释我的库有方法:
public Task<TemplateInfo> TemplateInfo(TemplateInfoRequest request);
public Task<List<EmailResult>> SendMessageTemplate(SendMessageTemplateRequest request);
我需要这样称呼这些:
public bool SendMessage()
{
var template = TemplateInfo(...);
var message = //use template to create message
var sendResponse = SendMessageTemplate(message);
return sendResponse.Count > 0;
}
所以第二个调用依赖于第一个。这是异步对我来说没有意义的地方。 我不能也不想并行运行这些。我想按顺序运行它们。 我希望 my 方法同步。
answer in my previous question 还声明:
因为你阻塞了一个异步方法(你不应该这样做) 你有可能会陷入僵局。
那么我如何访问这些async 方法,以便依次处理它们并返回同步结果但不会导致死锁?
【问题讨论】:
-
利亚姆你非常非常非常困惑。异步并不意味着并发。
-
@Aron:异步是并发的一种形式。但是,异步与并行不同。
标签: c# asp.net asynchronous async-await task-parallel-library