Привет, у меня есть код ниже, в котором вы можете видеть, что есть событие кнопки, которое содержит поток, который запускает метод скриншотов. и этот метод скриншота имеет бесконечный цикл, который продолжает работать внутри цикла кода. Мой вопрос в том, что если мы поместим тот же код метода скриншота внутри события Button. будет работать так же, как и потоки.Почему Threading используется здесь?
Ниже приведен код.
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' события, то это блокирует поток пользовательского интерфейса, и пользовательский интерфейс не будет отвечать, т. е. вы могли бы нажимать кнопки и т. д. – MotoSV
да, вы правы, он заблокирует поток пользовательского интерфейса, я пробовал это, он блокирует пользовательский интерфейс, но в чем причина эта блокировка ?? жаль, что я новичок в threading, поэтому задаю такие вопросы. –
Здесь используется неправильно, обращаясь к пользовательскому интерфейсу из потока, который не является основным потоком. – harold