2014-02-24 87 views
0

我有一個問題,我怎樣才能讓循環運行一段代碼無限的時間?基本上我有一個代碼的和平,它使用隨機函數來創建一個像素化的位圖圖像,並將其顯示到我的圖像框到用戶界面。 但是,當我需要執行那段代碼以便同時生成圖像並不斷地爲了製作這些圖像的視頻剪輯而彼此播放時,我遇到了困難。我使用了「while(true)」循環,但它並沒有在我的屏幕上顯示任何內容,每次運行代碼時我的程序都會崩潰。 任何人都可以告訴我如何使一個非常平滑的循環以毫秒爲間隔執行我的代碼?我怎樣才能讓一個循環生成圖像無限的時間來製作一個影片剪輯?

While (true) 
{ 
    foreach (Point p in blackPixels) 
    { 
     if (r.NextDouble() < 0.20) 
     { 
      bmp.SetPixel(p.X, p.Y, Color.Black); 
     } 
     else 
     { 
      bmp.SetPixel(p.X, p.Y, Color.White); 
     } 
    } 

    pictureBox1.Image = bmp; 
} 
+0

在你的算法中使用遞歸。但即使這樣也有一個結局標準(這不是無限的)。你也需要更多地考慮遞歸的內存管理。 –

+0

您在任何時候都沒有更新您的用戶界面。您的代碼正在生成新圖像,但從不更新前端。 –

+0

尼爾奈特,你能解釋清楚你說的是什麼意思嗎?我正在使用「pictureBox1.Image = bmp;」每一次,所以它應該更新我的輸出! – CowBoy

回答

0

如果您在UI線程上運行此代碼,則不會顯示任何內容,因爲while循環會阻止該線程。您需要將代碼放置在單獨的線程或任務中。

+0

是否有任何實際解決方案? – CowBoy

相關問題