C#为什么播种随机生成器会停止我的程序?

C#为什么播种随机生成器会停止我的程序?,c#,random,xna,C#,Random,Xna,我在我的一个类中声明了一个随机生成器,如下所示 static Random random = new Random(DateTime.Now.Millisecond); 当调用类中的函数时,即使该函数为空,也会阻止整个程序运行 static Random random = new Random(); 但当我这么做的时候,它能像预期的那样工作吗 使用代码编辑: 这个程序是专门的XNA游戏,所以这里是更新功能 protected override void Update(GameTime gam

我在我的一个类中声明了一个随机生成器,如下所示

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");
    }
}

如无参数建造师的MSDN文件所述:

使用与时间相关的默认种子值初始化Random类的新实例


如果您的Random实例化实际上是阻塞代码的原因,那么请知道您不需要随着时间的推移对其进行播种。不过,我会研究代码阻塞的其他可能性。

还有其他一些问题。调试时,如果在执行过程中中断,程序会挂起哪一行?这可能与此无关,但您的程序是多线程的吗?因为
Random
不是线程安全的……下面是一篇关于如何使
Random
线程安全的文章:它将在调用函数之前运行该行,但不会运行函数的第一行。不,我没有使用线程。我想这是因为静电。如果不小心,静态初始值设定项(初始化顺序)可能会出现一些问题。尝试在单例中不使用静态。