Custom Device Considerations
Here are some important considerations when developing your device.
Don’t do ANY time consuming work in the
StartorStopmethods. 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).Use
async/awaitwhere 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.Prefer
ProcessMessageAsyncoverProcessMessage. Same reasoning as (2), but specific for processing messages. Also,ProcessMessagewill be obsoleted in the next version of Connexion.Use
OnErrorto handle retrying. This usesasync/awaitunder the covers so there are no threads tied up sleeping. For an example of this please see: Sample Device with Retry (Sending)