Вы можете создать 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());