While Reed's suggestion is perfectly good one, it may not be the only possibility worth considering. 10-15 seconds initializing is quite a long time. It may be initializing some fairly large, complex data structures that could take quite a while to serialize and deserialize. If so, it might be worth considering another possibility, such as creating an out-of-process COM (or DCOM) server that acts as a front-end for the CAD API, and then let both App1 and App2 work with that server in one place. This would mean marshalling and unmarshalling all the data you send to/receive from the CAD API, but depending on how much data is involved and (particularly) how often you'd need to switch from its being used by App1 vs. App2, it might still have lower overhead.