Strona 1 z 1

Wstrzymanie działania wątku gdy brak internetu

Nowy postNapisane: wtorek, 19 grudnia 2017, 12:08
przez mate006
Witam serdecznie

W jaki sposób mogę wstrzymać działanie wątku gdy nagle wystąpi błąd połączenia z internetem? Chodzi o program który za pomocą pakietu Indy aktualizuje stany na serwerze.

Oczywiście zależy mi też że jak np, internet wróci wątek się wznowił.

Prosiłbym o jakieś porady.

Pozdrawiam

Re: Wstrzymanie działania wątku gdy brak internetu

Nowy postNapisane: środa, 20 grudnia 2017, 11:33
przez polymorphism
Za mało szczegółów. Kto miałby wstrzymać ten wątek? Sam siebie ma zatrzymać?

Re: Wstrzymanie działania wątku gdy brak internetu

Nowy postNapisane: środa, 20 grudnia 2017, 16:39
przez Cyfrowy Baron
Czy chodzi o to, że chcesz by pobieranie pliku z serwera zostało wstrzymane w momencie gdy nastąpi zerwanie połączenia i wznowiło się od miejsca w którym zostało przerwane, gdy połączenie zostanie ponownie nawiązane?

Re: Wstrzymanie działania wątku gdy brak internetu

Nowy postNapisane: środa, 20 grudnia 2017, 21:47
przez mate006
Chodzi o to że pobieram ze strony stany (niestety hurtownia nie udostępnia pliku XML ani żadnego innego), za pomocą http://programowanie.cal.pl/cyfbar/ Cyfrowy Baron gdy nagle nastąpi brak internetu wyskakuje błąd i program się zawiesza.

Re: Wstrzymanie działania wątku gdy brak internetu

Nowy postNapisane: czwartek, 21 grudnia 2017, 11:53
przez polymorphism
Jeśli chodzi o funkcję ReadFileURL(), to popraw ją, bo jest tak sobie napisana:
KOD cpp:     UKRYJ  
AnsiString ReadFileURL(const AnsiString &Url)
{
        AnsiString result;

        HINTERNET hSession = InternetOpen("ReadFileURL", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);

        if(hSession)
        {
                HINTERNET hService = InternetOpenUrl(hSession, Url.c_str(), NULL, 0, 0, 0 );
                if(hService)
                {
                        char lpBuffer[1024 + 1];
                        DWORD dwBytesRead;

                        while(InternetReadFile(hService, lpBuffer, 1024, &dwBytesRead) == TRUE)
                        {
                                if(dwBytesRead == 0) break;
                                lpBuffer[dwBytesRead] = 0;
                                result += lpBuffer;
                        }
                }

                InternetCloseHandle(hService);
        }
       
        InternetCloseHandle(hSession);
        return result;
}