2012-03-01 44 views
-2

所以我在一個類定義一個隨機生成這樣C#爲什麼播種隨機發生器停止我的程序?

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

其他事情正在發生。在調試時,如果你在執行中斷,你的程序會在哪一行掛起? – Oded 2012-03-01 17:12:09

+2

這不是說它可能在這裏,但是你的程序是多線程的嗎?因爲'Random'不是線程安全的...... – 2012-03-01 17:15:46

+0

這裏有一篇關於如何使'隨機'線程安全的文章:http://blogs.msdn.com/b/pfxteam/archive/2009/02/19/19 9434171.aspx – 2012-03-01 17:18:12

回答

3

的一部分。如在規定System.Random適用於無參數構造函數的MSDN文檔:

使用時間相關的默認種子值初始化Random類的新實例。

如果您的Random實例化實際上是阻止您的代碼,那麼知道您不需要隨時間播種它。但是,我會研究其他可能性,以阻止您的代碼。