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

    VB.net - Dataset

    Ciao a tutti. Ho un problema. Sto creando un programma composto da più form, ciascuna delle quali accede ad una diversa tabella sql (tutte presenti in un unico file di schema xml). Chiaramente al momento del load del form invoco il metodo Fill per riempire il dataset e visualizzare i dati. Fin qui tutto bene.
    Il problema è che quando apro un form per la prima volta, passa circa un secondo prima di visualizzarlo (questo deriva dal fatto che in queel lasso di tempo il datset deve essere riempito). La cosa strana è che la tabella da cui vengono pescati i dati non contiene molti record (circa 500). È normale questo comportamento, ciè che impieghi così tanto?

    È possibile riempire i dataset prima, ossia al memento dell'apertura del programma, di modo tale che quando apro i vari form i dataset sono già tutti riempiti? Non so se sono riuscito a spiegarmi ...

    Grazie per la risposta.

  2. #2
    Adesso ti spiego due trucchi.

    Primo, se hai un applicazione che ha dei processi pesanti all' avvio (Load) pre-compila l' immagine con il tool ngen.exe che trovi nel framework (vedi SDK)

    Poi se usi SQL Server, puoi attivare il Pooling e usare sempre la stessa connessione, questo comporterà una maggiore velocità di esecuzione all' avvio.

    Inoltre, se i dati sono in sola lettura, riempi il dataset con un dataReader non con un DataAdapter ...

    Ultima: Dataset Tipizzato, piu' veloce.
    Indici in SQL Server, maggiore velocità.

    Ti bastano?


  3. #3
    Ciao Raffaeu. Innanzitutto grazie per la tua risposta.

    Da quello che dici la cosa è realizzabile ... ma mi sa che non è porprio semplice. Ti chiedo un favore: potresti postarmi un esempio concreto cosiccheé possa studiarlo? Esiste qualche articolo utile in internet (possibilmente in italiano) che mi spieghi qualcosa a riguardo?

    Grazie e buona settimana.

    Daniele

  4. #4
    Urca urca ... Ti posto il link per la pre-compilazione.
    Per il Pooling di connessioni cerca su Google, è un argomento da analizzare bene, prima di fare casotti sul SQL.

    Precompilare
    http://msdn.microsoft.com/library/it...torngenexe.asp

    SQL Pooling
    http://www.devleap.com/Articolo3732.devleap

  5. #5
    Grazie ancora Raffaeu. Ho eltto gli articoli: ma di preciso cosa fa ngen.exe? A che punto del mio programma devo lanciare l'ordine ngen myProgr.exe, nella form di avvio del programma?

    Grazie ancora.

    Daniele

  6. #6
    Beh detto semplice semplice ngen crea un immagine compilata del tuo programma e quando l' exe gira, il programma conosce già references e altro e quindi impiega meno tempo ad avviarsi inoltra le info principali le prende dall' immagine, per questo l' esecuzione migliora nelle performance.

    Per la seconda, dipende, puoi anche farlo esterno al programma ...

  7. #7
    Se io volessi eseguire l'ngen al momento dell'apertura della prima form di avvio del programma, che codice dovrei scrivere nella form?

    È possibile che io questo ngen.exe non sia incluso nel mio pacchetto di Visual basic .net installato?

    Per attivare SQl pooling devo agire sulla stringa di connessione ai dati, ipostando a TRUE la proprietà pooling?

    Grazie ancora e scusami per queste domande che ti parranno magari banali, ma veramente sto cercando di capire i principi di fondo e non mi risulta semplice.

    Daniele

  8. #8
    Si per SQL ci sei, al massimo crea una piccola classe per gestire connessione e dataset ... magari nel iDispose della classe ci piazzi la chiusura al Db e robe simili.

    Per ngen mo ti spiego.

    Come si usa?

    ngen [options] [assemblyName |assemblyPath ]

    Se si utilizza Ngen.exe per generare immagini native per un'applicazione in fase di installazione, è necessario specificare il nome del file dell'applicazione e i nomi di assembly completamente specificati dei file DLL a cui faceva riferimento l'applicazione al momento della compilazione.

    Cosa fa?

    L'esecuzione di Ngen.exe su un assembly consente di caricare ed eseguire l'assembly più rapidamente perché il codice e le strutture di dati vengono ripristinati dalla cache dell'immagine nativa anziché essere generati in modo dinamico.

    Crei l' exe e poi ne fai l' immagine. Ogni volta che rigeneri la soluzione chiaramente devi ricreare l' immagine.
    Lo trovi nella cartella SDK del framework e se usi Visual Studio ce l' hai per forza ...

    Si usa da riga di comando (DOS)

  9. #9
    Membro Junior L'avatar di xam85it
    Registrato dal
    Nov 2003
    Messaggi
    64

    inserisci il fill sulla repaint

    inserisci la chiamata alla fill sul repaint(a questo punto il form è già disegnato, e magari la chiamata metttila in un thread. in questo modo lavora senza appesantire il programma base. per i thread è semplice:
    codice:
            Dim thread As New(myfunctionm.handle) Threading.Thread

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.