Właśnie zaczynam od nowych funkcji C# async
C#. Czytałem dużo porad na temat równoległych pobrań itp., Ale nic na temat czytania/przetwarzania pliku tekstowego.Używanie asynchronizmu C# 5.0 do odczytu pliku
Miałem stary skrypt, którego używam do filtrowania pliku dziennika i doszedłem do wniosku, że muszę go zaktualizować. Jednak nie jestem pewien, czy moje użycie nowej składni async
/await
jest poprawne.
W mojej głowie widzę czytanie linii pliku po wierszu i przekazywanie jej do przetworzenia w innym wątku, aby można było kontynuować bez czekania na wynik.
Czy dobrze o tym myślę, czy w jaki sposób najlepiej to wdrożyć?
static async Task<string[]> FilterLogFile(string fileLocation)
{
string line;
List<string> matches = new List<string>();
using(TextReader file = File.OpenText(fileLocation))
{
while((line = await file.ReadLineAsync()) != null)
{
CheckForMatch(line, matches);
}
}
return matches.ToArray();
}
Pełen skrypt: http://share.linqpad.net/29kgbe.linq
Wystarczyło spojrzeć na [msdn docs] (http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx), co jasno pokazało, że myślę o słowach kluczowych w złym droga. Nie sądzę, by można było wiele zrobić, aby poprawić wydajność w tym przypadku. –
Czy mogę to polecić? http://blog.jerrynixon.com/2012/06/windows-8-how-to-read-files-in-winrt.html –