J'ai une application C# par laquelle je configure les paramètres d'une caméra Ethernet. L'appareil photo agit en tant que serveur et l'application agit en tant que client.L'arrière-plan ne fonctionne pas
Il y a 2 prises de communication, une pour la communication de données/commande - prise de données (communication bidirectionnelle) et une autre prise pour l'image, la caméra envoie l'image via la prise d'image. La caméra enverra l'image via la prise d'image chaque fois qu'un déclencheur matériel lui est donné (non prévisible quand le déclencheur matériel viendrait).
L'utilisateur peut configurer la caméra en modifiant les valeurs dans l'interface graphique. Lorsque l'utilisateur modifie un paramètre, les applications envoient la commande et les données à la caméra via le socket de commande et attendent une réponse (le délai de réception est de 5 secondes). La caméra reçoit la commande et renvoie la réponse. L'interface graphique le reçoit met à jour l'utilisateur qui a été mis à jour avec succès. Une boucle infinie à l'intérieur maintient l'interrogation de l'image dans le socket de l'image et à chaque réception de l'image, elle est affichée dans l'interface graphique (j'utilise un délégué pour faire cela). Tout va bien :)
Maintenant, quand un déclencheur est venu à la caméra, il enverrait l'image. Au même instant, l'utilisateur change un paramètre, l'application envoie la commande/les données et attend la réponse. La caméra ne recevra la commande qu'après avoir envoyé l'image complètement. Ce qui se passe, c'est que l'arrière-plan (qui reçoit l'image) n'est pas en cours d'exécution lorsque l'application attend la réponse pour la commande. Ainsi, l'interface utilisateur attend la réponse dans le socket de commande et la caméra envoie l'image dans le socket de l'image et l'interface utilisateur ne reçoit pas l'image car le worker ne fonctionne pas. Il devient un interblocage et le délai d'attente (5 sec) se produit à la commande socket :(
Pourquoi l'arrière-plan ne fonctionne pas lorsque le socket attend le délai d'attente? J'ai remplacé l'arrière-plan travailleur par thread et je définis la priorité comme le plus élevé. l'erreur (délai d'attente) fréquence a diminué, mais le même problème se produit occasionaly. Qui de vous les gars me aider à trier cela et me aider à comprendre le problème.
Merci, Vishnu
Cela a fonctionné. Merci Johnan Bias. – Vishnu