我想使用Parallel.For和異步等待將一些任意GPS數據(1.5億條記錄)加載到Azure表存儲中。但我在第一個await聲明中遇到以下錯誤:在異步lambda表達式中使用await運算符的錯誤
「await」運算符只能在異步lambda表達式中使用。考慮用'async'修飾符標記這個lambda表達式。
這裏是我的代碼:
private static async Task GenerateGpsPointsForTruckAsync(int counter, CloudTableClient tableClient)
{
// Create a dummy VIN
string vin = counter.ToString("D17");
Random random = new Random();
DateTime start = new DateTime(2010, 1, 1);
int range = (DateTime.Today - start).Milliseconds;
// Create the batch operation.
TableBatchOperation batchOperation = new TableBatchOperation();
// Prepare 10 batches of 100 GPS points
Parallel.For(0, 10, i =>
{
for (int j = 0; j < 99; j++)
{
Location location = new Location(vin, start.AddDays(random.Next(range)).ToString());
location.Coordinates = new GeoCoordinate(random.Next(30, 45), random.Next(75, 100));
batchOperation.Insert(location);
}
await Task.Run(async() =>
{
await LoadGpsPointsForTruckAsync(tableClient, batchOperation);
});
});
}
我看着堆棧溢出一些解決方案,但他們似乎並沒有爲我工作。
似乎沒有什麼是工作? – i3arnon
我想你錯過了'Parallel.For(0,10,i => ...'line上創建的lambda上的'async'修飾符。你能不能嘗試在那裏添加一個? –
你爲什麼要'等待Task.Run(...'而不是簡單的'等待LoadGpsPointsForTruckAsync(...);' – Alex