2017-08-28 108 views
-1

我有一个从HttpTaskAsyncHandler继承的异步处理程序。 在处理程序中的某行,我有一个代码,它调用一个异步方法(用'async'关键字装饰),它在documentDB中执行一个命令并返回一个任务,如下例所示:https://docs.microsoft.com/en-us/azure/cosmos-db/documentdb-dotnet-application等待HttpTaskAsyncHandler里的方法

最初我有一个普通的通用处理程序,但链接显示他们将控制器更改为异步,因此我更改了我的处理程序以从HttpTaskAsyncHandler继承。现在,我觉得在这里有太多/重复的多线程,我的处理程序现在是异步的,但也在处理程序内,我正在等待一个与documentDB api一起工作的方法(插入操作)。

我在这里做两个异步操作?一个是因为处理程序是异步的,另一个是因为documentDB方法调用是异步的?

+0

代码在哪里?你在说什么线程和重复? 无论如何'await'不*使*异步调用。它*在继续之前等待已完成的异步操作。同样,'ProcessRequestAsync'方法不会使你的代码异步,它允许你使用'async/await'或者简单地将一个热门任务返回给框架。该处理器知道如何等待该任务 –

+0

谢谢你,这是类似我的代码: 公共类的Class1:HttpTaskAsyncHandler { 公共覆盖异步任务ProcessRequestAsync(HttpContext的背景下) { 等待ASD(); } 私人异步任务 asd() { return await SomeMethod(); } } 它是否正常,使我在ProcessRequestAsync方法中添加'async'关键字有所不同? – SimpleDesign

+0

永远不要把代码放在评论中,你需要[编辑你的问题](https://stackoverflow.com/posts/45920795/edit)并把你的代码放在那里(并正确格式化) –

回答

1

我在做两个异步操作吗?是。

代码意味着什么等待asd();它承诺在异步操作完成后产生期望结果&如果下面有代码,代码执行的进一步性质将变为同步。

+0

谢谢vishal,那么可以将async关键字添加到方法中吗? 是否可以,并且一定需要我在这里做的两个异步操作? – SimpleDesign