Сортировка данных в реальном времени - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет собственно вопрос. Я осуществляю поиск файла по имени из текущей директории. Файлов может быть и 100 и 200 и 1000. Поиск и я реализовал на LINQ и Regex. Я просто перебираю все файлы которые есть и потом отсекаю ненужные по критериям. Но проблема в том что сперва идет поиск всех файлов, а уже потом их сортировка, какие мне нужны. Как мне сделать чтобы при поиске файлы которые нужны добавлялись в реальном времени? Тоесть идет поиск и первый полученный файл отображается в консоли. Мне что надо метод который сортирует вызывать в поиске в отдельном потоке и по одному значению ему передавать? И консоль тоже в отдельном потоке вызывать? Я просто этого не разу не делал мб что то не допонял. Что мне прочесть чтобы это реализовать?

Решение задачи: «Сортировка данных в реальном времени»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.ComponentModel;
  6. using System.Threading;
  7. using System.IO;
  8.  
  9. namespace BGW_Test {
  10.     class Program {
  11.         static BackgroundWorker worker;
  12.         static void Main(string[] args) {
  13.             worker = new BackgroundWorker();
  14.             worker.WorkerSupportsCancellation = true;
  15.             worker.DoWork += new DoWorkEventHandler(worker_DoWork);
  16.             worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
  17.             worker.RunWorkerAsync();
  18.             Thread.Sleep(5000);
  19.  
  20.             worker.CancelAsync();
  21.             Console.ReadLine();
  22.         }
  23.  
  24.         static void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
  25.             if (e.Cancelled) {
  26.                 Console.WriteLine("Canceled!");
  27.             }
  28.         }
  29.  
  30.         static void worker_DoWork(object sender, DoWorkEventArgs e) {
  31.             DirectoryInfo info = new DirectoryInfo(@"C:\Windows");
  32.             foreach (FileInfo fi in info.GetFiles()) {
  33.                 Thread.Sleep(500);
  34.                 Console.WriteLine("FileName: {0}", fi.Name);
  35.                 if ((sender as BackgroundWorker).CancellationPending) {
  36.                     e.Cancel = true;
  37.                     return;
  38.                 }
  39.             }
  40.         }
  41.     }
  42. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы