Bonjour.

Je dois faire appel à une methode BeginXXX et je souhaite attendre qu'elle ait fini son job pour passer à la suite.

Comme toute methode Begin, il y a une callback qui va avec, et je me suis imaginé cette solution, à mon avis sale et dangereuse, qu'en pensez vous?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
    private Mutex _mutex;
 
    ///Cette methode doit attendre la callback pour retourner
    public void Close()
    {
          lobjet.JobDone+= new EventHandler(OnJobDone); //La callback a attendre
 
          new Thread(delegate()
          {
             _mutex.WaitOne(0); //Je vérouille le mutex pour bloquer ma methode Close  plus bas
          }).Start();
 
          lobjet.BeginJob();
 
          _mutex.WaitOne(new TimeSpan(0,0,2)); // La j'attend la callback, je sais que BeginJob durera 1 seconde environ
    }
 
    private void OnJobDone(object sender,EventArg e)
    {
         _mutex.ReleaseMutex();
         _mutex.Close();
    }