Tout événement dans C # .Net qui me dit un événement sur port série dataReceived s'arrête Réception de données

StackOverflow https://stackoverflow.com/questions/1201036

  •  05-07-2019
  •  | 
  •  

Question

Je travaille sur une implémentation de port série en C #. J'obtiens des données de SerialPort et je les ajoute au type de file d'attente de la collection (déclaration globale). J'utilise un thread BackgroundWorker pour traiter les données dans la file d'attente. Le problème est que. Si le port série arrête l'envoi des données et des données reçues, arrête la réception des données Il reste encore des données dans ma file d'attente qui doivent être traitées. Existe-t-il un moyen qui me dise qu'aucune donnée ne provient de SerialPort ou en d'autres termes, Port_dataReceived est arrêté de recevoir des données. Pour que je puisse traiter toutes les données présentes dans la file d'attente. Parce que cette fois, je serai sûr qu’il n’y aura plus de données en provenance du port série et que les données de la file d’attente sont les dernières données à traiter. Merci d'avance - Chetan

Était-ce utile?

La solution

Si vous utilisez System.IO.Ports.SerialPort, je ne pense pas qu'il y ait quelque chose de intégré. Vous devez le coder vous-même.

Y a-t-il une raison pour laquelle vous ne pouvez pas simplement utiliser l'événement DataReceived et traiter les données au fur et à mesure de leur arrivée?

Cela est délicat, car vous devez prendre en compte le fait que le port d'écoute SerialPort fonctionne sur un autre thread. Vous devrez donc peut-être vous soucier de la sécurité des threads. Vous pouvez toutefois définir une variable DateTime globale et la mettre à jour dans l'événement DataReceived. et vérifiez ensuite dans votre code si la dernière fois que les données ont été reçues a dépassé n secondes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top