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

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

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

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

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

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Threading;
using System.IO;
 
namespace BGW_Test {
    class Program {
        static BackgroundWorker worker;
        static void Main(string[] args) {
            worker = new BackgroundWorker();
            worker.WorkerSupportsCancellation = true;
            worker.DoWork += new DoWorkEventHandler(worker_DoWork);
            worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
            worker.RunWorkerAsync();
            Thread.Sleep(5000);
 
            worker.CancelAsync();
            Console.ReadLine();
        }
 
        static void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
            if (e.Cancelled) {
                Console.WriteLine("Canceled!");
            }
        }
 
        static void worker_DoWork(object sender, DoWorkEventArgs e) {
            DirectoryInfo info = new DirectoryInfo(@"C:\Windows");
            foreach (FileInfo fi in info.GetFiles()) {
                Thread.Sleep(500);
                Console.WriteLine("FileName: {0}", fi.Name);
                if ((sender as BackgroundWorker).CancellationPending) {
                    e.Cancel = true;
                    return;
                }
            }
        }
    }
}

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


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

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

6   голосов , оценка 4.167 из 5
Похожие ответы