Well, one option is to use a memory mapped file to get shared access to the data. There is an article here about it: DevGlobalCache – A way to Cache and Share data between processes[^] That's C++ but you may be able to rework it to C# depending on how confident you feel about that sort of thing. Alternatively, you could have one central "cache manager" that loads the cache into memory on system start-up, then the other processes link to it using named pipes or something to load the cache into their local memory when they initialise (or lazy-load the cache as they need it). Or, you could load the cache once, then serialise it out to disk in an easy to read format that can be loaded back when needed. Depending on what is involved in loading the cache, reading a serialised stream in from local disk might be quicker than re-initialising the cache from the ground up each time. The problem with these solutions is keeping the cache synchronised across all instances, but from what you say that doesn't sound like it's going to be a problem for you.