1

是否有开箱即用的东西可以在后台运行 Linq 查询 - 也许基于 PLINQ?我尝试了一些事情,但没有找到合适的方法。

我知道我可以创建一个后台工作人员来执行此操作,但我正在寻找“我可以使用”的东西,而不需要自己编写整个处理。

总体情况:我尝试让我的 WinForm 应用程序在读取数据时保持反应性(通过 LINQ),并在读取大量数据时避免“阻塞”。

4

1 回答 1

3

您可以生成一个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());
于 2011-03-04T20:32:11.443 回答