Odświeżanie wartości textbox...

Odświeżanie wartości textbox...
osamex
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 76
0

Witam, wyskakuje z kolejnym pytaniem na temat którego w internecie u wujka google aż się roi ale są to poskładane niepełne rozwiązania i bełkoty, otóż pisząc dalej swoja aplikację natrafiłem na pewien problem z którym zmagam się na razie bardziej pod względem merytorycznym i na etapie planowania... otóż, pisze aplikacje która pobiera z karty pomiarowej wartości z częstotliwością do 1Mhz, i czas ten (próbkowania danych jest jednym z kluczowych elementów, nie może być niczym zakłócony ani spowolniony), dane te maja wiadomo trafić na formę w postaci "WIZUALNEJ" czyli najlepiej do textBoxa i tu pojawia się problem... jak wrzucę w pętle bezwarunkowa for zmienne wyświetlane w textboxie to mi program się zawiesza, jak użyje osobnego wątku to i tak nic się nie wyświetla! Doszedłem do tego że text box musi mieć "czas" na wyświetlenie danych wiec powinienem użyć timera i po każdej iteracji w pętli a wiec pobraniu aktualnej wartości zatrzymać wyświetlanie na kilka milisekund i dalej go, ale to odpada bo spowolni mi prace programu o kilka milisekund. W programie producenta sprzętu panowie użyli czegoś takiego jak DopubleBufferList i w tej liscie wyświetlali zmienne, czy macie jakieś materiały na ten temat??? Czy używać BufferList i jak to robić? A może macie jakiś inny pomysł na wyświetlanie pobieranych danych w czasie rzeczywistym?!

Pozdrawiam
Oskar

maszynaz
  • Rejestracja: dni
  • Ostatnio: dni
0

Jeśli ci się coś blokuje to znaczy, że nie umiesz posługiwać się wątkami.
Tu masz przykład wątku, który się nie blokuje

Kopiuj
  private void nutton1_Click(object sender, EventArgs e)
{
 th = new Thread(new ThreadStart(myfunction));
 th.Start();//uruchomienie watku
}

private void myfunction()
{
    while(1)
    {
        UpdateTextBox();
    }
}
public delegate void UniversalCallback();
static int liczesobie=0;
private void UpdateTextBox()
{          
         if (this.TextBox1.InvokeRequired)
         {
               this.TextBox1.Invoke(new UniversalCallback(UpdateTextBox), null);
          }
          else
          {
               TextBox1.Text="Hura udało się. Mam teraz numer :"+(liczesobie++).ToString();        
           }           
 }
 
BL
  • Rejestracja: dni
  • Ostatnio: dni
0

tutaj widzę że jest po button click , a znasz sposób na to by textbox sam się odświeżał co chwilę ?

xeo545x39
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kosmos
  • Postów: 1571
0

Ja nie mogę... Przerób jakiś kurs podstaw i dopiero się bierz za to... Wystarczy dać w evencie Load formy ten kod, który jest w evencie buttona...

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.