作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想等待 Task<int>
使用以下调用保存更改时由 Entity Framework Core 返回:myDbContext.SaveChangesAsync true
我找到了至少 3 种不同的实现方式,但我不确定哪一种是最好的,因为我并不真正关心 int
结果部分在 Task<int>
,在一天结束时,我只想等待。
使用 Async.AwaitIAsyncResult
然后 Async.AwaitIgnore
忽略 Task<bool>
:
async {
do! myDbContext.SaveChangesAsync true
|> Async.AwaitIAsyncResult
|> Async.AwaitIgnore
}
Task<int>
至
Task
然后就在等待
Task
与
Async.AwaitTask
:
async {
do! myDbContext.SaveChangesAsync true
:> Task
|> Async.AwaitTask
}
Task<int>
与
Async.AwaitTask
并忽略
Async.Ignore
的结果
async {
do! myDbContext.SaveChangesAsync true
|> Async.AwaitTask
|> Async.Ignore
}
AwaitIAsyncResult
如果我想在等待任务时出现错误时获取一个 bool 值似乎更相关(和/或我想通过超时对执行进行一些控制):
https://msdn.microsoft.com/en-us/visualfsharpdocs/conceptual/async.awaitiasyncresult-method-%5Bfsharp%5D?f=255&MSPPError=-2147217396 .我也怀疑如果我想避免在等待时出现问题时向我的脸上抛出异常,而是获取一个 bool 值,这是正确的。
int
的意图。的
Task<int>
/
Async<int>
.
最佳答案
界面 IAsyncResult
是 .NET 上异步早期的遗留物(请记住 FileStream.BeginRead
/FileStream.EndRead
),因此它仅在与遗留 API 互操作时使用。
事实Async.AwaitIAsyncResult
返回 Async<bool>
并不意味着它以任何方式处理异常,事实上它没有。
所以与 Async.AwaitIAsyncResult
顺便说一句,我会说你的第三个例子
async {
do! myDbContext.SaveChangesAsync true
|> Async.AwaitTask
|> Async.Ignore
}
关于f# - 我什么时候应该使用 Async.AwaitIAsyncResult 而不是 Async.AwaitTask 来等待任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57225578/
我想等待 Task使用以下调用保存更改时由 Entity Framework Core 返回:myDbContext.SaveChangesAsync true 我找到了至少 3 种不同的实现方式,但
我是一名优秀的程序员,十分优秀!