你好,我有一段代碼,其中你可以看到有一個按鈕事件,其中包含啓動屏幕快照方法的線程。而這個截圖方法有無限循環,它繼續在循環內運行代碼。 我的問題是,如果我們把相同的屏幕截圖方法代碼放在Button事件中。將像線程一樣執行相同的操作。爲什麼在這裏使用線程?
以下是代碼。
private void button1_Click(object sender, EventArgs e)
{
Thread thread = new Thread(screenshot);
thread.Start();
}
void screenshot()
{
for (; ;)
{
Bitmap bitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
Graphics graphics = Graphics.FromImage(bitmap as Image);
graphics.CopyFromScreen(0, 0, 0, 0, bitmap.Size);
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox1.Image = bitmap;
}
}
如果你把它放在'Click'事件,那麼它將阻止UI線程和UI不會迴應,即您將能夠單擊按鈕等。 – MotoSV 2015-04-05 14:03:51
是的,你是正確的,它會阻止UI線程我已經嘗試過這是阻止UI,但是背後的原因是什麼這阻塞?對不起,我是線程新手,爲什麼要問這樣的問題。 – 2015-04-05 14:06:28
在這裏使用不正確,從不是主線程的線程訪問UI。 – harold 2015-04-05 14:13:26