我有以下情况:
List<Product> productsA = _productRepository.GetProductsA().ToList();
List<Product> productsB = _productRepository.GetProductsB().ToList();
我有一个使用两个集合的扩展方法:
productsA.CompareBeta<Produto>(productsB, new List<string> { "Cod" }, "Key");
好吧,它完美无缺。 但我想使用任务工厂更改这些存储库方法。
var productsA = Task.Factory.StartNew(() => _productRepository.GetProductsA());
var productsB = Task.Factory.StartNew(() => _productRepository.GetProductsB().ToList());
Task.WaitAll(produtosTotvs, produtosLive);
也有效。但现在我无法获得我的扩展方法。有可能吗?
答案 0 :(得分:0)
尝试
var productA = Task.Factory.StartNew<IEnumerable<Product>>(() => _productRepository.GetProductsA());
var productB = Task.Factory.StartNew<IEnumerable<Product>>(() => _productRepository.GetProductsB());
Task.WaitAll(produtosTotvs, produtosLive);
productsA.Result.CompareBeta<Produto>(productsB.Result, new List<string> { "Cod" }, "Key");
但这是异步的糟糕实现!
尝试将其全部替换为等待异步模式。
答案 1 :(得分:0)
您应该尝试通过任务的结果访问扩展方法:
productsA.Result.CompareBeta<Produto>(productsB.Result, new List<string> { "Cod" }, "Key");
详细了解Task Result