Newsgroup: it.comp.lang.visual-basic
Titolo: Strana attesa all'avvio di un'applicazione VB

Ciao a tutti.
Ho uno strano problema con una mia piccola applicazione.
Quando viene lanciata su un PC (e solo su quello) c'è una inspiegabile pausa
di circa 5 secondi in cui non riesco a capire cosa succede.
Il form viene visualizzato immediatamente, il cursore si trova sulla prima
TextBox ma è fisso (non lampeggiante) e non si può fare niente.
Dopo circa 5 secondi il cursore comincia a lampeggiare e tutto riprende
regolarmente.
Dopo la visualizzazione del Form non c'è assolutamente nessun codice che
viene eseguito.
Qualcuno ha idea di cosa possa causare questa pausa inziale?
Grazie
Skysurfer


 Ma lo fa solo su questa applicazione?
--------------------------------
Inviato via 
http://usenet.libero.it

  Ma lo fa solo su questa applicazione?
Sì, solo su questa e solo su un PC!!!
Skysurfer

 Skysurfer
 
  Allora sta impicciato il PC!!! Guarda lo spazio libero su disco, prova un
defrag, in ogni caso non credo sia un prob del'applicazione.
Ciao


 Sě, solo su questa e solo su un PC!!!
ma c'e' qualche caricamento , file relativamente grosso?
A me lo stesso problema lo dava un applicativo semplicissimo che aveva una
bitmap come sfondo della form , su un pc tutto ok , su un altro era tutto
bloccato per un po di secondi anche se si "vedevano" a video tutti i
controlli bitmap compresa :-/

Skysurfer ha scritto:

Probabilmente sta solo caricando il motore di Jet (o del database
utilizzato) per qualche oggetto Bound-ato
Sicuro che (da macchina spenta e riavviata) non si verifichi anche su altra
macchina?


Non ho nessun oggetto Bound nel form. Effettivamente apro una connessione
all'avvio e riempio una combo con i record di una tabella (sono solo 3
record!!!).
E comunque al momento di visualizzazione del form tutto questo è già stato
eseguito, infatti vedo nel primo elemento della combo il valore del primo
record.
Adesso sto provando a ricreare il form partendo da zero per vedere se il
problema si presenta ancora e da quale momento.
Se avete altre idee....
Grazie.
Skysurfer

 Ciao
Non è un problema di PC, anche perchè sullo stesso PC c'è un'altra
applicazione che possiamo definire abbastanza simile a questa che dà il
problema (nel senso che anche lì c'è un'apertura di connessione all'avvio) e
che presenta un semplice Form... che funziona perfettamente.
Ci sono comunque diversi Gb liberi su disco e 128 MB di RAM.
Grazie
Skysurfer

 ha scritto nel
messaggio news:b3id97$1mjo18$1...@ID-174485.news.dfncis.de...

Non ho nessuna bitmap di sfondo... sigh.
Skysurfer

 Se avete altre idee....
Fai una prova: crea un progettino che accede a Jet/Access senza fargli fare
cose stratosferiche.
Provalo e salvalo.
Riavvia fisicamente la macchina e sincerati di non avviare altro che carichi
Jet.
Prova il tuo programma misurando i tempi.
Ora (anche chiudendolo e aspettando diversi secondi) riavvialo (senza
spegnere la macchina) e ri-misura i tempi. Noterai che è molto più veloce.
La differenza sta nel fatto che Jet [deve essere] o [è già caricato]...
Dall'idea che mi son fatto, tale caricamento può richiedere 5/10 secondi,
dipende dalla velocità della macchina.

 richiedere 5/10 secondi, dipende dalla velocità della macchina.
Confermo l'impressione.
Una bella form di splash, all'apertura del programma, mentre sotto si aprono le
connessioni, aiuta a fare una figura migliore. L'utente aspetta di più, ma, vai
a sapere perchè, è più contento.
--
Salutoni
Sergio

Allora... ho isolato il pezzo di codice che dà problemi.
Il problema è l'apertura della connessione... apro un DBF in rete e capisco
che la cosa possa rallentare il tutto (non picchiatemi se non ve l'ho detto
prima!)
Quello che non capisco è come mai quando il form viene visualizzato mi trovo
già la combo caricata. Se è così significa che la connessione è già stata
aperta. E allora cosa diavolo succede in quei 5 secondi?!?
Ecco il pezzo di ccodice che è rimasto:
Option Explicit
Dim Cn As ADODB.Connection
Dim Rs As ADODB.Recordset
Private Sub Form_Load()
Set Cn = New ADODB.Connection
Cn.ConnectionString = "Driver={Microsoft Visual FoxPro Driver};" & _
    "SourceType=DBF;Exclusive=No;Null=No;" & _
    "SourceDB=H:\Prova"
Cn.Open
Set Rs = New ADODB.Recordset
Rs.Open "Select * from tabresp", Cn, adOpenForwardOnly, adLockReadOnly,
adCmdText
cmbResp.AddItem "          "
Do While Not Rs.EOF
    cmbResp.AddItem Rs!Responsab
    Rs.MoveNext
Loop
cmbResp.ListIndex = 1
Cn.Close
End Sub
Grazie e ciao!
Skysurfer

Ho fatto una prova anche con gli eventi della connessione, come da codice
che riporto sotto.
I messageBox mi appaiono in sequenza senza pause (Cn_WillConnect,
Cn_ConnectComplete, Cn_WillExecute, Cn_ExecuteComplete, Cn_Disconnect)
E dopo aver dato l'OK all'ultimo MessageBox ecco i diabolici 5 secondi!!!
Ciao
Skysurfer
-------
Option Explicit
Dim WithEvents Cn As ADODB.Connection
Dim Rs As ADODB.Recordset
Private Sub Cn_ConnectComplete(ByVal pError As ADODB.Error, adStatus As
ADODB.EventStatusEnum, ByVal pConnection As ADODB.Connection)
    MsgBox "Cn_ConnectComplete"
End Sub
Private Sub Cn_Disconnect(adStatus As ADODB.EventStatusEnum, ByVal
pConnection As ADODB.Connection)
    MsgBox "Cn_Disconnect"
End Sub
Private Sub Cn_ExecuteComplete(ByVal RecordsAffected As Long, ByVal pError
As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pCommand As
ADODB.Command, ByVal pRecordset As ADODB.Recordset, ByVal pConnection As
ADODB.Connection)
    MsgBox "Cn_ExecuteComplete"
End Sub
Private Sub Cn_WillConnect(ConnectionString As String, UserID As String,
Password As String, Options As Long, adStatus As ADODB.EventStatusEnum,
ByVal pConnection As ADODB.Connection)
    MsgBox "Cn_WillConnect"
End Sub
Private Sub Cn_WillExecute(Source As String, CursorType As
ADODB.CursorTypeEnum, LockType As ADODB.LockTypeEnum, Options As Long,
adStatus As ADODB.EventStatusEnum, ByVal pCommand As ADODB.Command, ByVal
pRecordset As ADODB.Recordset, ByVal pConnection As ADODB.Connection)
    MsgBox "Cn_WillExecute"
End Sub
Private Sub Form_Load()
Dim sql  As String


 aperta. E allora cosa diavolo succede in quei 5 secondi?!?
Effettivamente è strano, sempre che l'attesa si prolunghi anche quando la
finestra viene visualizzata
Non è che hai qualche Show esplicito? E dove?

Credo di aver risolto il problema.
Prima della soluzione succedeva un'altra cosa strana.
Dopo il riavvio del PC il programma funzionava correttamente.
Se però veniva aperto Internet Explorer, anche su una pagina vuota, dopo
aver chiuso Internet Explorer e provando a rilanciare il programma... Puf...
5 secondi di limbo!
Ho installato MDAC 2.7 invece del 2.6 e tutto sembra funzionare
correttamente.
Grazie per la vostra pazienza e il vostro aiuto.
Skysurfer

 correttamente.
ma un povero programmatore come dovrebbe fare a capire certi "strani
comportamenti" come questo ? :-/
Cioe' come diavolo si puo' risolvere in modo "standard" un problema come
questo ? bha !
So curioso di sapere come sei riuscito ad arrivare alla soluzione !

 So curioso di sapere come sei riuscito ad arrivare alla soluzione !
Di solito è questione di (_O_) .
Bye, G.

 Di solito è questione di (_O_) .
Era in realta' l'unica risposta che mi aspettavo e che non volevo leggere
^_^
-- 
 un Gigio2K con cellulare acceso ... e tu ? <g>

  un Gigio2K con cellulare acceso ... e tu ? <g>
... io no... O:-(=)
Un Paperino facciamo domani, se ti va.

 Un Paperino facciamo domani, se ti va.
Proxima settimana ^_^;