J'ai un programme en C# et j'utilise une boucle while pour lire les lignes d'un fichier. Je veux être en mesure d'afficher le numéro de ligne toutes les 5 secondes environ sans ralentir la boucle while, afin que l'utilisateur puisse voir à quelle distance il se trouve. Des idees pour faire cela?C# Fonction d'appel dans la boucle while toutes les X secondes sans boucle de blocage
CODE
try
{
// Create an instance of StreamReader to read from a file.
// The using statement also closes the StreamReader.
Stopwatch sw = Stopwatch.StartNew();
using (StreamReader sr = new StreamReader(@"C:\wamp64\www\brute-force\files\antipublic.txt"))
{
String line;
int lines = 0;
// Read and display lines from the file until the end of
// the file is reached.
using (System.IO.StreamWriter file = new System.IO.StreamWriter("C:/users/morgan/desktop/hash_table.txt"))
{
while ((line = sr.ReadLine()) != null)
{
file.WriteLine(CreateMD5(line)+':'+line);
lines++;
}
}
}
sw.Stop();
Console.WriteLine("Time taken: {0}s", sw.Elapsed.TotalSeconds);
Console.ReadLine();
}
catch (Exception e)
{
// Let the user know what went wrong.
Console.WriteLine("The file could not be read:");
Console.WriteLine(e.Message);
}
}
Exécutez le code de lecture de fichier dans le thread d'arrière-plan et envoyez une notification au thread d'interface utilisateur. –
Ne pourrait pas un simple 'si (sw.Elapsed.TotalSeconds% 5 == 0) Console.WriteLine (lignes +" lignes lues jusqu'ici ... ");' après 'lignes ++' dans votre boucle while travail? –
Simple Console.WriteLine toutes les 5 secondes ne ralentira pas significativement la boucle. Ou vous pouvez utiliser Task.Run –