Salut,
J'ai un problème de conception avec une application.
J'ai un controleur et un objet qui fait l'interface avec le serveur.
Le controleur a une méthode boolean login(); qui permet de se loguer. (Sa signature ne peut pas être changée)
En gros, voici mes classes
	
	| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 
 | class controller {
 
  Server s;
 
  boolean login() {
    s.sendMessage(...);
    wait();
    return (connecté ou non)
 }
 
  void receiveMessageFromServer(String message) {
    // Traitement du message
    Si le message a trait avec le login:
    notify();
    // D'autres types de messages peuvent arriver
  }
}
 
class Server {
Socket s....
void sendMessage() {
    s. send(...);
}
 
Server() {
  new Thread([...]);
  // Ce thread lit tout ce qui vient du serveur et appelle controller.receiveMessageFromServer();
}
 
} | 
 
Mon but est donc de bloquer l'execution de login() tant que je n'ai pas reçu de réponse.
Si je lance mon code, j'ai une erreur :
	
	10-05 16:12:22.970: ERROR/AndroidRuntime(842): java.lang.IllegalMonitorStateException: object not locked by thread before wait()
 Comment faire pour bloquer ma methode login() en attendant une réponse ? (et dans l'idéal, les autres messages devraient pouvoir être traités en attendant)
Je développe pour Android, mais je ne pense pas que ça ait un rapport.
Merci pour votre aide.
						
					
Partager