是否有开箱即用的东西可以在后台运行 Linq 查询 - 也许基于 PLINQ?我尝试了一些事情,但没有找到合适的方法。
我知道我可以创建一个后台工作人员来执行此操作,但我正在寻找“我可以使用”的东西,而不需要自己编写整个处理。
总体情况:我尝试让我的 WinForm 应用程序在读取数据时保持反应性(通过 LINQ),并在读取大量数据时避免“阻塞”。
您可以生成一个Task<T>
,并让它包装您的 PLINQ 查询。
PLINQ 不是关于创建异步操作(您想要什么),而是在单个(阻塞)操作中进行并发处理。相反,您可能想要执行以下操作:
Task<IEnumerable<YourType>> task = Task.Factory.StartNew(
() =>
{
// Use standard LINQ here...
return myCollection.Where(SomeCriteria);
}
);
// When this is completed, do something with the results
task.ContinueWith( t =>
{
IEnumerable<YourType> results = t.Result;
// Use results here (on UI thread - no invoke required)
}, TaskScheduler.FromCurrentSynchronizationContext());