在不同线程上运行的两个实例交叉且重复了不应具有的数据

时间:2019-06-20 12:27:59

标签: c# multithreading

我有一个可执行我的自动化测试的可执行文件。今天,我通过运行一个同时运行它们的.bat文件运行了4组测试。

这些测试正在我们的软件中构建策略。我们收到了一个SQL错误,该错误是由两个实例同时输入相同的保单持有人信息引起的。

在每种情况下,测试都会从1500多个名称和地址的列表中随机选择,因此,尽管不太可能,但他们俩都选择了同一条记录。

莫名其妙的是,他们两个都输入了相同的驾照号码,在每种情况下都是随机生成的。

这从来没有发生过100次/ 1000次运行。

运行同一可执行文件的两个实例是否有可能以某种方式相互污染?

        Random rnd      = new Random();

        else if (Crawlspace.DLState == "NEW MEXICO")
            {
                int DLNum = rnd.Next(100000000, 999999999);
                Crawlspace.DLNumber = DLNum.ToString();

以这种方式构建测试以确保每种情况下的唯一记录。

1 个答案:

答案 0 :(得分:-1)

谢谢您。这就解释了我不了解的地方。

要修复,我将使用此行随机生成种子...

Random rand = new Random(Guid.NewGuid()。GetHashCode());

(是从另一个非常相似的问题中得到的)