Custom Device Considerations

Custom Device Considerations

Here are some important considerations when developing your device.

  1. Don’t do ANY time consuming work in the Start or Stop methods. There is a limit of 20 threads for Starting/Stopping devices. If you tie up one of these threads, there are fewer threads left for starting/stopping other devices. Without this cap, the server slows down and has difficulty starting channels because .NET generates too many threads (and thread creation is slow).

  2. Use async/await where possible. This reduces the number of threads required by Connexion and results in better performance, and lower memory usage. This is especially important if the Connexion is running more than 100 channels.

  3. Prefer ProcessMessageAsync over ProcessMessage. Same reasoning as (2), but specific for processing messages. Also, ProcessMessage will be obsoleted in the next version of Connexion.

  4. Use OnError to handle retrying. This uses async/await under the covers so there are no threads tied up sleeping. For an example of this please see: Sample Device with Retry (Sending)