Form (Non Risponde)

venerdì 23 novembre 2007 - 16.35

Teech Profilo | Expert

Ho un problema che nel suo piccolo è molto fastidioso.

Ho creato un Form che deve ciclare circa 2 milioni di record su un DB SQL2005 e confrontarli con un DB proprietario di un gestionale. L'accesso al DB del gestionale avviene attraverso delle classi fornite dai produttori del gestionale stesso...
In questa maschera ho messo una Label dove scrivo dati identificativi per il record in elaborazione così posso rendermi conto del punto in cui mi trovo... Lancio la procedura e tutto va correttamente solo che guardare dei numeri che girano su una label è stressante quindi, mentre la procedura gira faccio altro... Dopo 10 minuti torno a vedere a che punto è la procedura (che impiega diverse ore ad elaborare) e la label è fissa mentre sulla barra superiore della form è presente la dicitura (Non risponde).

La procedura stà elaborando anche con la Form che Non Risponde...
Ad ogni aggiornamento della label lancio un Me.Refresh per sicurezza...

Come faccio a far funzionare questo semplice controllo? Perchè si comporta in modo così anomalo?

Grazie a chi può rispondermi.
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

diegoooo82 Profilo | Junior Member

Prova a mettere un Application.DoEvents all'interno del ciclo
forse ti si rallenta un po.
pero se l'applicazione gira in un ciclo è quasi normale che non aggiorna la form... anche a me è successo

alextyx Profilo | Expert

Non credo sia tanto anomalo, in quanto tutte le risorse del thread in cui risiede la form con tutti i suoi controlli, vengono 'drenate' dal ciclo di lettura/confronto sui db. Pertanto l'interfaccia della tua applicazione è impossibilitata a fare alcunchè, compreso a rispondere al SO. Presumo che comunque, alla fine del ciclo, tutto torni ad operare normalmente.
Ho lo stesso comportamento con una applicazione che mi sincronizza due PC (o due dischi).
Se vuoi liberare l'interfaccia utente, la cosa più pulita che puoi fare è eseguire il ciclo lettura/confronto in un thread diverso.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5