.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);
}
}