I have multiple actions running at the same time. When Action 1 is finished - it's followed up by Action Nr.2, then 3, then 1 or 9 or 9 again or 10 or 7... in random sequence.

I need to:
- Store data which I get as the result of the Action/activity. 
- Retrieve This data when the same Action continues! 
I can identify actions:
- by the unique ID
Here is how I imagine it:
- Start program. 
- First step is to check if Data for new Activity exists - for that reason we grab ID and do the checking. 
- Since it's our new/first Action/Activity there isn't any past data, so by the end of the action we create and save new data into some kind of dynamic storage. - string[,] ID123 = new string[2, 3] { { "120", "200", "#ffc90e" }, { "380", "200", "#22b14c" } }; 
- When Action 1 is finished, Action 2 starts, Practically, we do the same as what we did in p.3. - string[,] ID456789 = new string[2, 3] { { "10", "5", "#40" }, { "6", "8", "#80" } }; 
- Now it's Activity 1 again! We identify it by the unique ID. This time, if we search for existing data- we will find this: - string[,] ID123 = new string[2, 3] { { "120", "200", "#ffc90e" }, { "380", "200", "#22b14c" } }; 
- Now I do some editing + adding new values if needed. Continue. 
One of the simplest solutions that I've thought of was - to simply create a temporary file with the "ID.txt" name. Unfortunatelly I'll be having up to 10-15 actions running at the same time so this approach won't be as fast as if I just recorded everything into memory.. The question is - how do I do it? sql? txt?
Some facts:
- ID are always different for different Activities 
- I don't know precise Activity count (varies between 10 and 15) 
- I'll need to store an array type data, i.e. 
string[,] array: 1, 15, 32, 12
2, 11, efg, 0
5, 9, 5, abc
...
- similar question: Dynamic array in C# 
- there will be some conditions in my code that will trigger "data removal", actions have a lifespan ;) 
 
     
    