【发布时间】:2015-08-13 23:34:28
【问题描述】:
我们已升级代码库以使用 async/await,但由于新的异步代码(HttpContext = null 是一个常见问题),许多以前工作的方法现在崩溃。我不确定如何绕过这个 IComparer.Compare() 方法。有任何想法吗?似乎我不能在 Compare 方法上使用异步任务:
public int Compare(myClass x, myClass y)
{
int someInteger;
// Standard, boring sorting code here.
// This is an MVC application calling into an Async method() here...
var xx = x.CallNewAsyncMethod();
var yy = y.CallNewAsyncMethod();
// Work with xx and yy now...
return someInteger;
}
如果我无法绕过使这个 .NET IComparer.Compare() 方法异步,还有其他替代方法(例如 LINQ)可以用来对我的类进行排序吗?需要注意的一点是,我已经简化了上面的代码,但是其中确实有很多事情要做,而且我们的排序代码也不是微不足道的。我们可以使用大约 10 种不同的排序,每种排序实际上是一个三级排序(按 a,然后 b,然后 c)。
感谢您的帮助!
【问题讨论】:
-
返回的是什么东西?
-
这可能会非常昂贵 - 确保你让它变得懒惰并缓存结果。
-
我同意 Daniel 的观点,如果您在这些类上使用 Sort、OrderBy 或 Contains,那么调用该异步方法的成本很快就会成为问题。
-
@DanielA.White 该函数返回一个收藏项目列表,可按日期、价格等排序。我的最佳猜测是普通用户会有 5-10 个收藏夹,最多 20 个。跨度>
标签: c# sorting asynchronous compare icomparer