.NET 4.x Красиво получать данные - C#

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

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

VS 2013, C#, WPF. При обращении программы к COM или USB-порту происходит подвисание на время чтения данных из порта. А как-бы в это время отображать хотя-бы мигающее сообщение поверх окна типа "Подождите. Идет получение данных." ? Или другую сопутсвующую анимацию, типа вращающихся сегментов или бегущих по проводах данных.

Решение задачи: «.NET 4.x Красиво получать данные»

textual
Листинг программы
public partial class MainWindow : Window
    {
          private BackgroundWorker BackWork = new BackgroundWorker(); 
          public MainWindow()
          {
            InitializeComponent();
            // назначение методов
            BackWorkGetWeather.DoWork += BackWork_DoWork;
            BackWorkGetWeather.RunWorkerCompleted += BackWork_DoWorkComplete;
          }
         // это и есть выполнение фоновой задачи
         private void BackWork_DoWork(object sender, DoWorkEventArgs e)
        {
           List<string> readList = new List<string>();
           MyClass mClass = (MyClass)e.Argument; // через MyClass передаются входящие данные
           // код получающий данные
           //..............
           //..............
           e.Result = readCOMPortList;
        }
        // метод вызывается по завершению BackWork_DoWork
        private void BackWork_DoWorkComplete(object sender, RunWorkerCompletedEventArgs e)
        {
            List<string> readList = new List<string>();
            if(e.Error == null)
            {
                readtList = (List<string>)e.Result;                // получаем результат работы BackWork_DoWork
               // код, обрабатывающий полученные данные
               // код, обновляющий данные в Control'ах
               // ............
               // ............
            }
        }
        private void OnLoaded(object sender, RoutedEventArgs e)
        {
             MyClass mClass = new MyClass();
             mClass.Port = "PORT_NAME";
             mClass.Speed = "19200";
             // и  так далее
             // .......
             // собственно запуск фоновой задачи
            BackWork.RunWorkerAsync(mClass);
        }
     }

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


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

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

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