Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [C++] Creare un Thread

  1. #1

    [C++] Creare un Thread

    Ciao a Tutti...

    Vi pongo il mio problema, ho creato una applicazione con Borland C++ Builder che fa utilizzo di socket Client e Server.
    Questi socket vengono utilizzati per scambiare dei DataBase Access, attrverso Internet, da una appliazione all'altra e viceversa.

    Il tutto funziona però ora vorrei ottimizzare il programma perche durante l'invio e ricezione del DataBase il programma si blocca e non si riesce a utilizzarlo.

    Avevo pensato ai Thread che da quello che ho capito, in parole povere, sono dei picccoli programmi indipendenti dal programma padre che eseguono delle istruzioni e riescono a scambiare variabili con il programma che li ha ha generati.

    Cosi vorrei creare un Thread creato da un evento (tipo dall'evento onclick di un bottone 'invia DataBase') e che esegua l'invio o la ricezione del DataBase in secondo piano al programma principale evitando cosi il suo Bloccaggio.

    Sui Thread non so nulla ho fatto delle piccole ricerche ma non ci ho capito molto, se qualcuno ha degli esempi o dei link mi aiuterbbe molto, poi se ci sono altre soluzioni o metodi migliori sono ben accetti.

    Grazie Mille in Anticipo.
    Il linguaggio migliore e quello che ti crei da solo...

  2. #2
    Utente di HTML.it L'avatar di Kreator
    Registrato dal
    May 2002
    Messaggi
    278
    per gli esempi sui Thread, basta che apri la guida contestuale e nella barra di ricerca scrivi TThread ... di esempi li ne hai quanti ne vuoi

  3. #3
    Ho guardato i vari esempi ma ancora non capisco certe cose.. :master:

    Ho creato un nuovo Unit (Unit9.cpp) per il Thread:

    codice:
    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    #include "Unit9.h"
    #include "Unit7.h"
    #include "Unit1.h"
    #include "Unit10.h"
    #pragma package(smart_init)
    //---------------------------------------------------------------------------
    
    extern SYSTEMTIME GetDataModificaFile(char *);
    extern String SendSockRichiesta(String,String);
    
    __fastcall ServerSocket::ServerSocket(bool CreateSuspended)
            : TThread(CreateSuspended)
    {
    
    }
    //---------------------------------------------------------------------------
    void ServerSocket::SetName()
    {
            THREADNAME_INFO info;
            info.dwType = 0x1000;
            info.szName = "ServerSocket";
            info.dwThreadID = -1;
            info.dwFlags = 0;
    
            __try
            {
                     RaiseException( 0x406D1388, 0, sizeof(info)/sizeof(DWORD),(DWORD*)&info );
            }
            __except (EXCEPTION_CONTINUE_EXECUTION)
            {
            }
    }
    //---------------------------------------------------------------------------
    void __fastcall ServerSocket::Execute()
    {
            SetName();
    
            // Codice da eseguire nel Thread
    }
    Pero nel Form Principale come faccio a dire di eseguire questo Thread dato un evento tipo Botton1Click?

    Devo avviare il metodo Execute() ma come faccio?

    Grazie per l'Illuminazione.
    Il linguaggio migliore e quello che ti crei da solo...

  4. #4
    Up

    Ne avrei Bisogno....
    Il linguaggio migliore e quello che ti crei da solo...

  5. #5
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797
    nel main devi
    1 creare l'oggetto tuo_thread..
    2 chiamare l'execute

    in thread c'era da modifcare qcosa .. ma ora nn ricordo ..

  6. #6
    Grazie Ce l'ho fatta...

    codice:
    ServerSocket *SS = new ServerSocket(false);
    Il linguaggio migliore e quello che ti crei da solo...

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.