【发布时间】:2015-04-21 09:56:36
【问题描述】:
我有一个异步加载函数来调用 WCF 服务,然后对结果进行一些处理。
protected async void Load(bool reload)
{
var items = await GetItems(skip, take, SearchString);
OnItemsLoaded(items);
}
即使旧的加载没有完成,也可以多次调用加载。
示例: 调用 1 => 调用 2 => 调用 2 的结果 => 调用 1 的结果
这就是我使用Task 和ContinueWith 来检查线程ID 并丢弃“旧”结果的原因。
但我想将其更改为 Async/Await 模式。
有两种情况:
-
Reload为真:应丢弃所有旧线程/结果。只应处理“最新”结果。 -
Reload为假:应处理所有线程/结果。
【问题讨论】:
-
你可以等待一个 GetItems 元组和一个序列号,可能使用互锁的东西分配(并允许溢出!)或者你可以将一个序列号传递给 GetItems 并让它在一个结构中返回它与物品的集合?
标签: c# multithreading wcf asynchronous async-await