Durante la ricerca del codice per svanire una winform, mi sono imbattuto in questo page nel forum MSDN.Algoritmo migliore per svanire una winform
for (double i = 0; i < 1; i+=0.01)
{
this.Opacity = i;
Application.DoEvents();
System.Threading.Thread.Sleep(0);
}
Il for
ciclo ha un incremento non intero e, da una domanda precedente ho chiesto, che non è una buona tecnica di programmazione (dovuta alla rappresentazione inesatta della maggior parte dei decimali).
Mi è venuta in mente questa alternativa.
for (double i = 0; i < 100; ++i)
{
this.Opacity = i/100;
Application.DoEvents();
System.Threading.Thread.Sleep(0);
}
Quale di questi è più efficiente?
Se esiste un algoritmo migliore per la dissolvenza di un modulo, sarei molto felice se è incluso.
Grazie.
@DarrenDavies su Win32, IIRC, il 'sonno (0)' è stato quello di restituire il tempo rimanente del thread per lo scheduler per dare altro thread la possibilità di correre. Forse su .NET questo è lo stesso. [Stati MSDN] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms686298 (v = vs.85) .aspx): "_Se si specifica 0 millisecondi, il thread rinuncerà al resto del suo intervallo di tempo ma rimane pronto._ " –
Che ne dici di cambiare semplicemente' int' in 'double'? –
Un singolo vb.net è "float" in C#, non int. –