Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di afrappe
    Registrato dal
    Jan 2002
    Messaggi
    1,197

    [vb.net] doevents non funziona(o meglio utilizzo improprio)

    devo eseguire una query molto pesante attraverso un command che restituisce un datareader
    quando viene invocato il metodo ".ExecuteReader" l'applicazione chiaramente rimane bloccata in attesa di restituire i dati

    ho provato a mettere Application.DoEvents() per cercare di ottenere il controllo sull'applicazione metre esegue l'operazione in corso ma rimane tutto bloccato
    ho provato anche a mettere il codice in una funzione che poi ho chiamato tramite un delegate ma l'effetto è lo stesso(applicazione bloccata fino al termine del operazione di lettura)

    devo l'anciare il codice in un'altro tread?? come faccio poi a sapere quando l'operazione è terminata? mi viene notificato un evento? posso poi interrompere l'operazione quando è ancora in corso?



    codice:
    Dim dr As OleDbDataReader
    Dim comm As New OleDbCommand
    comm.Connection = connessione  
    comm.CommandText = sql
    Application.DoEvents()
    dr = comm.ExecuteReader

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465
    L'uso di DoEvents dovrebbe essere evitato nella maggior parte dei casi.

    Lavorando con VB.NET, e quindi con il .NET Framework, fai ricorso ad un thread che è lo strumento ideale per poter eseguire operazioni lunghe in modo asincrono senza bloccare l'applicazione, evitando - se gestito bene - effetti collaterali indesiderati.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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.