【发布时间】:2012-03-01 17:10:31
【问题描述】:
所以我像这样在我的一个类中声明了一个随机生成器
static Random random = new Random(DateTime.Now.Millisecond);
当调用类中的函数时,即使该函数为空,它似乎也会阻止整个程序运行。
static Random random = new Random();
但是当我这样做时,它按预期工作了吗?
用代码编辑:
这个程序是专门的 XNA 游戏所以这里是更新功能
protected override void Update(GameTime gameTime)
{
Debug.WriteLine("This happenens");
EnemyController.generateEnemies();
Debug.WriteLine("This does not");
}
这是另一个类的一部分
public static class EnemyController
{
static Random random = new Random(DateTime.Now.Millisecond);
public static void generateEnemies()
{
Debug.writeLine("This code wont run");
}
}
【问题讨论】:
-
发生了其他事情。调试时,如果你在执行过程中中断,你的程序会挂在哪一行?
-
并不是说它在这里可能相关,但是您的程序是多线程的吗?因为
Random不是线程安全的... -
这是一篇关于如何使
Random线程安全的文章:blogs.msdn.com/b/pfxteam/archive/2009/02/19/9434171.aspx -
它将运行调用函数之前的行,但不会运行函数的第一行。不,我没有使用线程
-
我想是因为静态。如果您不小心,您可能会在使用静态初始化程序(初始化顺序)时遇到一些麻烦。尝试在单例中不使用静态。