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

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

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

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

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

textual
Листинг программы
  1. public partial class MainWindow : Window
  2.     {
  3.           private BackgroundWorker BackWork = new BackgroundWorker();
  4.           public MainWindow()
  5.           {
  6.             InitializeComponent();
  7.             // назначение методов
  8.             BackWorkGetWeather.DoWork += BackWork_DoWork;
  9.             BackWorkGetWeather.RunWorkerCompleted += BackWork_DoWorkComplete;
  10.           }
  11.          // это и есть выполнение фоновой задачи
  12.          private void BackWork_DoWork(object sender, DoWorkEventArgs e)
  13.         {
  14.            List<string> readList = new List<string>();
  15.            MyClass mClass = (MyClass)e.Argument; // через MyClass передаются входящие данные
  16.            // код получающий данные
  17.            //..............
  18.            //..............
  19.            e.Result = readCOMPortList;
  20.         }
  21.         // метод вызывается по завершению BackWork_DoWork
  22.         private void BackWork_DoWorkComplete(object sender, RunWorkerCompletedEventArgs e)
  23.         {
  24.             List<string> readList = new List<string>();
  25.             if(e.Error == null)
  26.             {
  27.                 readtList = (List<string>)e.Result;                // получаем результат работы BackWork_DoWork
  28.                // код, обрабатывающий полученные данные
  29.                // код, обновляющий данные в Control'ах
  30.                // ............
  31.                // ............
  32.             }
  33.         }
  34.         private void OnLoaded(object sender, RoutedEventArgs e)
  35.         {
  36.              MyClass mClass = new MyClass();
  37.              mClass.Port = "PORT_NAME";
  38.              mClass.Speed = "19200";
  39.              // и  так далее
  40.              // .......
  41.              // собственно запуск фоновой задачи
  42.             BackWork.RunWorkerAsync(mClass);
  43.         }
  44.      }

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


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

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

10   голосов , оценка 4.3 из 5

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

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

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