[C++/CLI .NET] TcpClient - "przepełniony bufer"

0

Witam,

Słowem wstępu: buduję sobie programik gg + rysowanie (cos ala Skype+talk&write).
W momencie kiedy na jednym kompie zaczynam rysowac (za dużo i za szybko) a na drugim równie często wciskam przycisk "undo" to po chwili rysunki sie "desynchronizują" a i czasem jakies wyjatki itp.

Chciałem więc zapytać czy istnieje jakiś sposób na sprawdzenie czy w buforze odczytu znajduje sie jeszcze wiele do odczytania - chcę wówczas wstrzymać możliwość min. wciskania butona "undo" i dać czas formie na przetworzenie odczytanych danych.

Dodam, iż odczyt danych mam w background_workerze, w ktorym to znajduje sie takowa petla:

                                 myDConn->Start(); //rozpoczecie polaczenia
				 while(!backgroundWorker1->CancellationPending)
				 {
					 myDConn->Receive(); 
                                         //w srodku ta funkcja zatrzymuje sie na poleceniu "int x = r->ReadInt32();"
                                         //x to rozmiar odbieranego pliku
					 this->Visible = true;
					 m_board->read();
					 m_board->drawPlane();
					 pictureBox1->Refresh();
					 
				 }
0

Wyjatki zapewne, dlatego ze odwolujesz sie w innym watku do komponentu tworzonego w innym, powinny byc delegaty (patrz refresh pictureboxa). Wczesniej czy pozniej bedziesz mial przez to problemy.

Pytanie jak czytasz dane ... cos wiecej. Skoro masz rozmiar odbieranego pliku to odblokowywujesz guzik jak go przeczytasz ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1