Originariamente inviato da cassano
allora già ti stoppo non si può fare con access !!!!
Infatti, lo immaginavo..in quanto ne avevo sentito parlare per sql server ma non per access.
Comunque, leggendo qualcosa sui thread e delegate, ho fatto una cosa del genere:
codice:
Private Sub SetTabellaComuni()
cmd.CommandText = "Select ID_Comune, (comune + ' (' + provincia + ')') as città from comuni order by comune;"
cmd.Connection = cn
cn.Open()
dr = cmd.ExecuteReader
bs.DataSource = dr
cn.Close()
End Sub
'carico in memoria la tabella comuni
Dim t As New Threading.Thread(AddressOf SetTabellaComuni)
t.Start()
Il passo successivo è quello di popolare la comboBox con i dati della tabella, ma anche qui, quando vado a visualizzare la combo l'esecuzione viene rallentata fintato che la combo non è completamente popolata. Per ovviare a questo e, per non incorrere in operazioni cross-thread non valide, ho usato un thread in associazione con un delegate:
codice:
Delegate Sub ShowComuniDelegate()
Dim threadShowComuni As New ShowComuniDelegate(AddressOf ShowComuni)
Private Sub ShowComuni()
If Me.InvokeRequired Then
Me.Invoke(threadShowComuni)
Return
End If
If cmbComuni.DataSource Is Nothing Then
cmbComuni.DisplayMember = "città"
cmbComuni.ValueMember = "ID_Comune"
cmbComuni.DataSource = bs
End If
cmbComuni.SelectedIndex = -1
End Sub
'popolo la combo....
Dim t As New Threading.Thread(AddressOf ShowComuni)
t.Start()
Il tutto provato nel pc a casa funziona bene e non si notano rallentamenti nel caricamento del form, mentre provato nel pc in ufficio si nota un rallentamento..ogni operazione viene bloccata fintanto che non viene popolata la combo...per questo vi pongo queste domande:
1) il procedimento che ho adottato, è giusto o sto sbagliando qualcosa?
2) il thread separato non dovrebbe evitare il rallentamento del caricamento del form? in pratica, perchè sul pc di casa è perfetto mentre in quello del lavoro no? potrebbe dipendere dal fatto che nel pc di casa ho 1Gb di ram mentre nell'altro 512Mb?
Spero che qualcuno possa darmi una delucidazione..
Grazie