Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Delegate Asynchrone

1 réponse
Avatar
Michael Moreno
Bonjour,

J'essaye d'utiliser un Delegate Asynchrone mais je pense que j'ai un
probleme de Synchronisation de Thread.

Voici mon code:

private delegate SD_ProcModInfoList UpdateProcListDelegate();

// c'est cette methode qui est appelee depuis un clic de bouton sur ma
form
private void RefreshProcesses()
{
UpdateProcListDelegate upld = new
UpdateProcListDelegate(LoadProcList);
upld.BeginInvoke(new AsyncCallback(DisplayProcList), null);
}

// appelee par le BeginInvoke
private SD_ProcModInfoList LoadProcList()
{
return m_RPC.GetProcessList();
}

// appelee quand LoadProcList a termine
private void DisplayProcList(IAsyncResult itfAR)
{
AsyncResult res = (AsyncResult) itfAR;
UpdateProcListDelegate upld =
(UpdateProcListDelegate)res.AsyncDelegate;
SD_ProcessInfo PInfo;
SD_ProcModInfoList ProcList = upld.EndInvoke(itfAR);
}

dans DisplayProcList je suis dans le Thread du Delegate et non pas dans
mon Thread principal. Donc je ne devrai pas modifier les controles
visuels de ma form. Or c'est exactement ce dont j'ai besoin de faire.

Que faut-il que je fasse pour resoudre ce probleme svp ?

Merci.

--
Michael
----
http://michael.moreno.free.fr/
http://port.cogolin.free.fr/

1 réponse

Avatar
Michael Moreno
Pour resoudre ce probleme il faut creer une nouvelle method qui va
afficher les resultats de ce genre:

private delegate void DisplayProcListDelegate(SD_ProcModInfoList
ProcList);

private void DisplayProcList(SD_ProcModInfoList ProcList)
{
if (InvokeRequired)
{
// We're not in the UI thread, so we need to call BeginInvoke
BeginInvoke(new DisplayProcListDelegate(DisplayProcList), new
object[]{ProcList});
return;
}

Affichage ici...
}


Ca serait plus simple d'utiliser un Thread directement...

--
Michael
----
http://michael.moreno.free.fr/
http://port.cogolin.free.fr/