【发布时间】:2013-05-20 00:33:15
【问题描述】:
我有一个循环(如下),它根据用户输入循环 N 次。该循环调用一个方法,该方法为插入数据库创建随机文本字符串。我希望循环在执行查询之前调用此方法,因此每次插入数据库都有不同的随机字符串。
似乎正在发生的事情是循环运行得太快,并且随机字符串插入了大约 50 次,因为动态字符串变量的更新速度不够快。但是,如果我输入Thread.Sleep(50),代码就会完美执行。
我不喜欢 thread.sleep 选项,因为我不知道它需要休眠多长时间,如果我们开始运行几十万个事务,这个时间就会加起来。有没有人有一个好的解决方案来确保该方法在继续之前完全执行?
for (int i = 0; i < nLoop; i++)
{
rnd.RndName();
query.CommandText = "insert into XXX (col";
query.ExecuteNonQuery();
}
【问题讨论】:
-
使用
While Loop并检查该值是否在数据库中,如果存在则继续? -
rnd.RndName()是否每次都创建一个新的Random对象?如果是这样,请不要这样做。 -
rnd是什么类型?向我们展示RndName的代码。 -
你用随机字符串做什么?如果只是为了获取一些独特的信息,您应该考虑为此使用 GUID (
Guid.NewGuid()) 以避免Random出现问题 -
@ArveSystad:GUID 有一些固有的结构,即使许多位实际上是随机的。请参阅以下内容并注意分配给某些位位置的含义:en.wikipedia.org/wiki/Globally_unique_identifier