Domanda:
Un'applicazione Visual Basic 6 o .Net riesce a gestire 20 Timer contemporaneamente sullo stesso form?
anonymous
2010-09-06 20:01:22 UTC
l'applicazione deve avere 20 caselle su ognuna delle quali a un certo punto può partire un conto alla rovescia.

Mentre questi 20 timer lavorano, l'utente potrà aprire un altro semplice form dove inserire dati nel data base

secondo voi l'applicazione si blocca oppure è fattibile senza problemi?
Tre risposte:
?
2010-09-06 23:35:34 UTC
L'applicazione non si blocca, ma potresti incontrare ritardi nell'esecuzione del codice all'interno dei vari timer. Per farti un esempio il timer standard di vb6 si blocca se viene visualizzato un MsgBox e riparte un volta chiuso il MsgBox.

Dipende però come implementi il tutto. In .NET se ogni timer lo fai lavorare in un thread separato non incontrerai problemi, in vb6 si perchè il multithreading è limitatamente possibile ma sicuramente non facile.
BluNotte
2010-09-07 07:55:56 UTC
Non dovrebbe essere un problema, a patto che tieni presente quanto segue:

i timer si sovrappongono (scatta il timer A, parte la routine A, scatta il timer B, parte la sub B, finisce la sub B, continua la sub A, finisce la sub A),

i timer non sono esatti (in vb.net puoi personalizzare il modo in cui agiscono: puoi scegliere se devono recuperare il tempo perduto oppure no)

in vb6 quando un timer scatta la sub relativa viene eseguita sempre nello stesso thread della grafica, bloccando momentaneamente la grafica (non succede nulla se le sub dei timer sono brevi). In vb.net puoi aggirare la cosa usando due thread, uno che fa girare i timer e quello "base" per la grafica. Ricorda però che, per chiamare funzioni grafiche dal thread dei timer, devi comunque effettuare l'invocazione sul thread della grafica (metodo invoke, che però non ricordo dove sta).
Ture_70
2010-09-07 06:48:41 UTC
Ti assicuro, per quanto riguarda il vb6, che già al 3° timer ti incasini...perchè appena ne parte uno, esso deve bloccare quello precedente e poi introdurre quello successivo....n' casino :D


Questo contenuto è stato originariamente pubblicato su Y! Answers, un sito di domande e risposte chiuso nel 2021.
Loading...