Gör så här: Kombinera parallella och sekventiella LINQ-frågor
Det här exemplet visar hur du använder AsSequential metoden för att instruera PLINQ att bearbeta alla efterföljande operatorer i frågan sekventiellt. Även om sekventiell bearbetning ofta är långsammare än parallell, är det ibland nödvändigt att ge korrekta resultat.
Kommentar
Det här exemplet är avsett att demonstrera användning och kanske inte körs snabbare än motsvarande sekventiella LINQ-till-objekt-fråga. Mer information om hastighet finns i Förstå hastighet i PLINQ.
Exempel
I följande exempel visas ett scenario där AsSequential krävs, nämligen att bevara den ordning som upprättades i en tidigare sats i frågan.
// Paste into PLINQDataSample class.
static void SequentialDemo()
{
var orders = GetOrders();
var query = (from order in orders.AsParallel()
orderby order.OrderID
select new
{
order.OrderID,
OrderedOn = order.OrderDate,
ShippedOn = order.ShippedDate
})
.AsSequential().Take(5);
}
' Paste into PLINQDataSample class
Shared Sub SequentialDemo()
Dim orders = GetOrders()
Dim query = From ord In orders.AsParallel()
Order By ord.OrderID
Select New With
{
ord.OrderID,
ord.OrderDate,
ord.ShippedDate
}
Dim query2 = query.AsSequential().Take(5)
For Each item In query2
Console.WriteLine("{0}, {1}, {2}", item.OrderDate, item.OrderID, item.ShippedDate)
Next
End Sub
Kompilera koden
Om du vill kompilera och köra den här koden klistrar du in den i PLINQ Data Sample-projektet , lägger till en rad för att anropa metoden från Main
och trycker på F5.