Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [VB6] spreco di risorse

    sto realizzando un'applicazione in vb6 che , tramite sendkeys , comanda un programma aperto.

    il programma comandato pero' non riesce a eseguire i suoi calcoli perche' la mia applicazione si mangia il 99% del processore. Ho provato a mandarla in "sleep" con i timer ma non funziona (addirittura spesso e' come se il timer non partisse proprio).

    Avete mai riscontrato problemi simili?


    grazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Certo ... non e' un problema ... e' soltanto la tua applicazione che utilizza un ciclo in cui non viene quasi mai rilasciato il controllo al sistema ...

    Un ciclo di questo tipo ci sara' ... ci mostri qual e'?

  3. #3
    ho una lunga sequenza di frammenti simili a questo

    SendKeys "%L", True
    Call tempo
    SendKeys "{DOWN}", True
    Call tempo
    SendKeys "~", True

    cioe' mando il comando, aspetto e mando l'altro.

    l'attessa e' obbligatoria (ma se qualcuno sa come sia possibile evitarla gliene sarei grato!!) perche' altrimenti i comandi arriverebbero troppo velocemente portandomi in situazioni non desiderate (come se l'altro programma non riuscisse a gestirle tutte con precisione).

    la sub "tempo" l'ho provata in 2 versioni:

    Private Sub tempo()

    pausa.Enabled = True
    pausa.Interval = 2500

    End Sub

    questa non viene nemmeno considerata, o meglio, il timer funziona ma il codice non si ferma!
    -----------------------------------------------------

    Private sub tempo()
    mtime = Time
    Do While True
    If Time <> mtime Then
    Exit Do
    End If
    Loop
    end sub

    questa seconda versione invece consente di "spedire" i comandi giusti e di farli ricevere al momento giusto.
    Purtroppo mi rendo perfettamente conto del fatto che questo uccida il sistema dal punto di vista delle prestazioni.

    Sto cercando di utilizzare il primo metodo visto che in un punto del codice do' un "ok" affinche' vengano calcolati dei valori. Questi calcoli, con VB addosso al processore, risultano lentissimi, talmente lenti da far finire la pausa e spedire il comando successivo (che non deve arrivare prima del termine dei calcoli!!!)


    spero di non essermi dilungato troppo e di aver spiegato bene la situazione

    grazie

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Inserisci nel ciclo la Sleep e un DoEvents ...

    codice:
        Do While True
            Sleep 10
            DoEvents 
            If Time <> mtime Then
                Exit Do
            End If
        Loop
    La Sleep la dichiari con

    Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)

  5. #5
    non so come mai ma non ho ricevuto notifica della tua risposta.
    ora provo e poi ti faccio sapere

    intanto grazie!


    ----------------------------------------------------
    ho appena provato, una sola parola: GRANDISSIMO!!

    funziona! adesso e' tutto piu' veloce, non mi resta altro da fare che calibrare bene la pausa.

    grazie ancora!!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.