Dans ma fonction DoWork(), je m'inscris auprès de notre serveur sip. Ensuite, je dois attendre une réponse en retour. Cependant, la réponse que je reçois est reçue dans un autre événement. Cependant, avant que je puisse vérifier le drapeau dans le DoWork() le DoWork() a tout fini prêt et la réponse vient après.C# joignant des threads en arrière-plan worker DoWork()
J'essaie de trouver un moyen d'attendre dans le DoWork() jusqu'à ce que j'obtienne une réponse dans l'événement Diagnotic. J'ai un drapeau global qui est placé dans cet événement que je dois vérifier dans le DoWork().
Merci pour tout conseil,
// Do work in background worker
//Will return less than 8 if there are no error message from the library
if (!this.bgwProcessLogin.CancellationPending)
{
// Register and wait for response
VaxSIPUserAgentOCX.RegisterToProxy(3600);
}
else
{
// Update label
if (this.lblRegistering.InvokeRequired)
{
// do something here
}
else
{
// Display error
}
}
// WAIT FOR A RESPONSE FROM THE DIAGNOTIC EVENT BEFORE CONTINUING - MAYBE JOIN HERE
if (!this.bgwProcessLogin.CancellationPending)
{
if (this.responseFlag)
{
// Do something here
}
else
{
// Do something else here
}
}
// Another function where I receive the response
private void VaxSIPUserAgentOCX_OnIncomingDiagnostic(object sender, AxVAXSIPUSERAGENTOCXLib._DVaxSIPUserAgentOCXEvents_OnIncomingDiagnosticEvent e)
{
string messageSip = e.msgSIP;
//Find this message in the sip header
string sipErrorCode = "600 User Found";
if (messageSip.Contains(sipErrorCode))
{
// Set global flag for response
this.responseFlag = true;
}
}
Salut (1) Quel est le drapeau de réponse? Et où est-il réglé à vrai? (2) Pourriez-vous publier la méthode dans laquelle vous utilisez réellement l'arrière-plan? – Grzenio
Bonjour. La réponse est un protocole «600 utilisateurs trouvés». Si elle a été définie sur true, un utilisateur a été trouvé. J'ai changé le code pour le rendre plus simple. Je pense que scotty a la meilleure solution. Je vais avec ça pour le moment. Je posterai à nouveau quand je l'aurai complètement terminé. Merci. – ant2009