Index: jsonconftest.pp
===================================================================
--- jsonconftest.pp	(revision 15330)
+++ jsonconftest.pp	(working copy)
@@ -22,6 +22,7 @@
     procedure TestEnumValues;
     procedure TestClear;
     procedure TestKey;
+    procedure TestConcurrency;
   end;
 
 implementation
@@ -253,7 +254,44 @@
   end;
 end;
 
+procedure TTestJSONConfig.TestConcurrency;
+const
+  form1 = 'ReportForm/';
+  form2 = 'LearnerListForm/';
+var
+  Co1, Co2: TJSONCOnfig;
+begin
+  // form 1
+  Co1 := CreateConf('concurrency.json');
+  Co1.SetValue(form1+'Width', 400);
+  Co1.SetValue(form1+'Height', 300);
+  Co1.SetValue(form1+'Maximized', True);
 
+  // form 2
+  Co2 := CreateConf('concurrency.json');
+  Co2.SetValue(form2+'Width', 456);
+  Co2.SetValue(form2+'Height', 600);
+  Co2.SetValue(form2+'Maximized', False);
+
+  // Simulate Form 1 closing
+  DeleteConf(Co1, False);
+
+  // Simulate Form 2 closing
+  DeleteConf(Co2, False);
+
+  // Now load Form 1 again
+  Co1 := CreateConf('concurrency.json');
+  try
+    AssertEquals('Failed on 1', 400, Co1.GetValue(form1+'Width', 100));
+    AssertEquals('Failed on 2', 300, Co1.GetValue(form1+'Height', 100));
+    AssertEquals('Failed on 3', True, Co1.GetValue(form1+'Maximized', False));
+  finally
+    // Test cleanup
+    DeleteConf(Co1, True);
+  end;
+end;
+
+
 initialization
 
   RegisterTest(TTestJSONConfig); 
