Déclarations :
1 2 3
|
public delegate void imageChargeHandler(object sender, imgChargeEventArgs imgC);
public event imageChargeHandler ImageCharge; |
Classe :
1 2 3 4 5 6
|
public class imgChargeEventArgs : EventArgs
{
public PictureBox PB;
public imgChargeEventArgs(PictureBox _PB) { PB = _PB; }
} |
Abonnement dans le thread principal :
ImageCharge += new imageChargeHandler(Visionneuse_ImageCharge);
Appel dans le thread :
1 2 3 4 5 6 7 8 9 10 11 12 13
|
private void Th1()
{
foreach (listItem monLI in maListItem)
{
try
{
imgChargeEventArgs e = new imgChargeEventArgs(monLI.laPictureBox);
if (ImageCharge != null) ImageCharge(this, e);
}
catch (Exception ee) { MessageBox.Show(ee.Message); }
}
} |
Fonction effectuée lors de l'appel :
1 2 3 4 5 6 7 8 9 10 11
|
void Visionneuse_ImageCharge(object sender, imgChargeEventArgs imgC)
{
foreach (listItem monLI in maListItem)
{
if (imgC.PB == monLI.laPictureBox)
{
affImage(monLI.laPictureBox, monLI.leFichier.FullName);
}
}
} |
A noté que la boucle placer ailleurs dans le thread principal fonctionne bien.
J'ai surtout utilisé cette méthode comme teste.
J'ai aussi remarqué qu'une fois fini le thread, les picturebox on bien l'image en propriété mais qu'un refresh n'affiche pas ces images.
Il faut rappeler la fonction affImage, qui au final refait le thumbnail et repasse le thumbnail à la propriété Image du PictureBox qui l'avait déjà mais qui cette fois l'affiche.
Partager