The API is written as a wrapper around a COM object, so it must be run in a UI thread. I’ve found a way around this, but because it requires frame pushing, it always seems like it’s one exception away from being entirely unresponsive. This wouldn’t be as big of a deal if we could just shut it down and create a new thread, but it seems to recycle the internal component attached to the Eikon instance, and so it would require restarting the Eikon instance. There is no clean way to do this as manually restarting the instance still seems to keep it from being responsive (so it seems like they have a static instance of the COM object internally). Perhaps there is some way to start it in a separate app container and kill the container entirely, but I haven’t found out a way to do this yet.
If the Eikon instance doesn’t go down (and if we never encounter unexpected errors), this may not be a big issue, but if it does go down, it would currently require a restart of the server program to get working again. I’ve read reports of the Eikon instance logging out after a certain period, and if true this would be an issue since I haven’t been able to find out how to auto-login after an actual logout (restarting it without logging out seems to work, but if it logs out, that’s different).
Perhaps it’s possible to use one of the COM API’s directly instead, but it’s unclear whether the same functions are supported (it doesn’t look like it) or if it would even resolve either of the issues at this point.