如何使用Thread移动PictureBox?

Nat*_*Way 3 c# multithreading picturebox

我正在学习C#中的线程,所以我的第一个程序将是2个将要移动的图像.但问题是,当我尝试在线程中执行新点时,我收到错误:

这是我的代码:

namespace TADP___11___EjercicioHilosDatos
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        int x = 0;
        int y = 0;

        private void Form1_Load(object sender, EventArgs e)
        {
            Thread Proceso1 = new Thread(new ThreadStart(Hilo1));
            Proceso1.Start();
        }

        public void Hilo1()
        {   
            while (true) 
            {
                x = pictureBox1.Location.X - 1;
                y = pictureBox1.Location.Y;
                pictureBox1.Location = new Point(x, y);
            }   
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Tim*_*tan 6

您只能从创建控件的线程更新控件.控件确实有一个Invoke可以从另一个线程调用的方法.此方法接受一个委托,指定您要在控件的线程上执行的工作:

var updateAction = new Action(() => { pictureBox1.Location = new Point(x,y); });
pictureBox1.Invoke(updateAction);
Run Code Online (Sandbox Code Playgroud)