Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    2

    Difficile da intitolare..[visual c++ 6]

    Salve a tutti,

    onestamente non sapevo come chiamare il thread perche' non so dove sta il problema.

    La situazione e' questa: Visual studio c++ 6. Una funzione di un button deve scorrere un file dove sono scritti un po' di indirizzi ip, connettersi all'ftp dell'indirizzo volta per volta, e infine dire quali hanno avuto successo (sono collegati).

    Ora il problema e' questo.Premendo il button ciclo sul file dove sono scritti gli indirizzi, e poi uno ad uno utilizzo:

    try{pConnect = sess.GetFtpConnection(ip,Server_user,Server_pass); }
    catch (CInternetException* pEx)
    {
    TCHAR sz[1024];
    pEx->GetErrorMessage(sz, 1024);

    pEx->Delete();
    }


    if (pConnect != NULL)
    {
    m_response="Connected to "+ip;

    pConnect->Close();

    }
    UpdateData (FALSE);

    ok....... Dunque de gli ip sono tutti validi non ci sono problemi, se per caso uno di questi ha il cavo di rete staccato, aspetta 10 secondi in cui il programma e' "bloccato".. E prima del try anche mettendo un m_response="connecting to...";Updatedata(false), non c'e' modo di farlo aggiornare. In poche parole io vorrei poter vedere che cosa sta facendo e quale indirizzo sta controllando il programma, invece finche non fa nulla.

    Sono sicuro che e' una cosa normalissima ed e' una questione di carenze di nozione. Vorrei solo sapere come ovviare.. (p.s. posso cambiare sia struttura sia modo/funzioni da usare, nessuno problema per le soluzioni migliori )

    Grazie a tutti.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,472
    Dovresti mettere prima della try le due istruzioni di cui parlavi e subito dopo chiamare una funzione che garantisca l'arrivo dei messaggi di visualizzazione alla finestra, prima di iniziare il collegamento (che essendo bloccante, non permettera' al messaggio WM_PAINT di arrivare per il ridisegno della finestra). Questa funzione, da chiamare subito dopo la UpdateData e prima di iniziare il try, puo' essere la seguente

    codice:
    MSG oMSG;
    while(PeekMessage(&oMSG, NULL, 0, 0, PM_NOREMOVE))
    { 
      if(GetMessage(&oMSG, NULL, 0, 0)) 
      {
        TranslateMessage(&oMSG);
        DispatchMessage(&oMSG);
      }
      else
      {
        break;
      }
    }
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    2
    ti ringrazio di tutto. per ora ho risolto con i multithread, ma la tua soluzione mi sembra molto piu semplice. Quindi non e' escluso che ci ripensi ti ringrazio.

    si imparano sempre cose nuove..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.