Try to reproduce this problem in one single method with only local variables.
It could be that your using the variable from 2 different threads, or perhaps your updating the elements in the myDict.
I'll try to explain my answer about reproducing it more:
You should create one method which could run on another computer and show the error you're getting.
So for example (Question: I'm getting a divide by zero exception):
var
i : integer;
begin
i := 3;
while (i <= 0) do
begin
Writeln(FloatToStr(20/i));
Dec(i);
end;
end
If you run this on a computer, people will get the divide by zero exception. So I was able to reproduce the problem. Try to create a snippet as simple as possible to reproduce in a consistent way the problem your having.