Locking out application is a bit of a problem right now, because VBA is a single threaded application. If you could find a way to put BlinkStick object into a thread from VBA, then you should be able to control it without locking up the application.
As an alternative, I may be able to implement threading inside the BlinkStickInterop. I would assume that this requires 3 essential features:
- Ability to call asynchronous function, which would create a thread to animate BlinkStick and exit immediately
- Ability to receive an event when the animation is complete so that you could start another animation if required
- Ability to get the current status of animation, whether it’s playing and stop it if required
It shouldn’t be a problem if you want to control one LED on the BlinkStick asynchronously, but ability to drive the animation from the VBA code with multiple LEDs may be complicated and I’m not sure yet of the approach I should take. I’m currently working on the new client application for BlinkStick and I’m facing the same issue. When I come up with a solution, I should be able to implement it in BlinkStickInterop. I would be very happy to hear if you have any suggestions or if you could explain how you are using your setup to give me some ideas on how to implement this in a most reusable way.
P.S. Glad to hear you love it!