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.
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.
}
}
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".