I'm about to embark upon an automation project that requires maximum possible automation performance in order to achieve required throughput.
I was intending to implement multiple Solid Edge application objects working together in parallel via background worker threads, in the belief that all application objects will utilise all available CPU cores and maximum performance from the host will be assured.
Can anyone foresee any potential problems I'm likely to run into? Is this a viable idea in principle?
You didn't mention if this is to be a server application or a client application. I don't think it's possible to automate Solid Edge from a Windows service. If it is technically possible, I would imagine you would run into a ton of issues as Solid Edge is designed to execute within a user environment.
If you want to truely achieve maximum performance, C++ is hands down the most appropriate language. You can get close with .NET but not without a LOT of work and a deep understanding of COM Interop. The details behind that statement would seriously require about an hour of explanation. I can't tell you how many times I've gone the .NET route only to get to the end and scrap it in favor of rewriting it in C++. I'm not bashing .NET as I'm a huge advocate, just speaking from experience.
I have not personally tested leveraging multiple instances of Solid Edge to perform automation tasks so I can't really say if there are any issues to be had. I'd say just try it and see how it goes. It's possible Solid Edge may not play nice with other instances of itself but without testing there's no way to know for sure. Regarding the number of background worker threads & edge.exe instances, it all depends on the system that it's running on. Obviously performance is going to be a bell curve with some maximum point of peak performance.