Отображение значения данных в реальном времени на C#

#c# #data-binding

#c# #привязка к данным

Вопрос:

Простой вопрос на C #: Я пытался разработать простую C # DLL, которая использует стороннюю библиотеку для потоковой передачи изображений с цифровой камеры.

Здесь действительно начинающий программист на C #, так что потерпите меня в этом вопросе 🙂

Я добавил счетчик в код, чтобы при каждом извлечении изображения счетчик увеличивался.

Я создал бессмысленный и простой графический интерфейс с кнопками запуска и остановки, чтобы убедиться, что все работает должным образом, потому что в прошлом у нас были некоторые проблемы, когда камера внезапно прекращала потоковую передачу, поэтому я хотел отслеживать этот счетчик таймера, чтобы убедиться, что он непрерывно увеличивается.

Каков разумный способ сделать это, чтобы получить отображение значения таймера в реальном времени? Значение — это просто UInt32 и является частью объекта, созданного из библиотеки DLL.

То, что я на самом деле реализовал, было неаккуратно: у меня есть кнопка, которая при нажатии выводила окно сообщения, отображающее значение таймера, поэтому, чтобы проверить, все ли еще работает, я бы дважды нажал эту кнопку, чтобы убедиться, что значение несколько увеличилось.

Каков правильный способ сделать это? Привязка данных? Что бы большинство из вас сделало в этом простом случае? Мне просто нужна метка / текстовое поле / что угодно, что будет постоянно обновляться значением элемента данных моего счетчика.

Спасибо!

Ответ №1:

Самым простым (при условии, что вы не можете просто обновлять при поступлении новых данных) было бы добавить таймер forms в вашу форму и обновить пользовательский интерфейс в событии «тик» таймера.

http://msdn.microsoft.com/en-us/library/system.windows.forms.timer.aspx

Ответ №2:

У меня был бы Label элемент управления (предполагающий winforms), для текстового свойства которого я бы устанавливал значение счетчика всякий раз, когда оно увеличивается.

 counter  ;
myLable.Text = counter;
  

Ответ №3:

метка — это очень хороший подход, но вы должны убедиться, что вы избегаете, чтобы приложение не отвечало, поэтому также добавьте строку кода, которая позволяет форме обрабатывать свою очередь

 lblNumber.Text = number;
Application.DoEvents();