Varkan
Messages postés27Date d'inscriptionmardi 9 juin 2009StatutMembreDernière intervention17 mai 2011
-
5 nov. 2009 à 09:05
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 2017
-
8 nov. 2009 à 17:38
Bonjour,
Je fais appelle à vous pour un petit programme en C# que je fais en tant que projet pour ma profession.
Mon projet est un jeux qui utilise beaucoup d'images et de pannel différentes, je voulais savoir comment utiliser un thread pour améliorer la fluidité de mon programme.
Voici un bout du code où les pannel (pnlile01 et plnile02) bougent en fonction des touches directionnelles du clavier.
Le soucis avec ça c'est que le thread utilise une méthode et je ne peux pas mettre le switch dans celle-ci car il utilise la fonction e.keydown qui ne sera pas dans la methode du thread.
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 5 nov. 2009 à 14:06
Salut, utiliser un second thread pour juste déplacer des panels ce n'est pas une très bonne idée, on va tomber dans des problèmes de cross-threading.
public partial class Form1 : Form
{
public Form1( )
{
InitializeComponent( );
}
protected override void OnKeyDown( KeyEventArgs e )
{
//base.OnKeyDown( e );
Thread t = new Thread( new ParameterizedThreadStart( ThreadFunc ) );
t.IsBackground = true;
t.Start( ( Object )e.KeyCode );
}
private void ThreadFunc( Object o )
{
Keys keyCode = ( Keys )o;
// Attention ici, si on modifie un contrôle ou une forme,
// il faudra éviter le cross-threading avec la méthode
// Control.Invoke ou Control.BeginInvoke.
}
}
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 8 nov. 2009 à 17:38
Bonsoir,
tout dépend de la complexité des informations affichées, mais si la "form" ne contient que des "panels" qui contiennent une image, alors le plus simple serait de supprimer tous les panels et de surcharger la methode OnPaint de la "form".