小弟的源码如下:using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        { 
            this.setTop = this.setPictureBoxTop;
            this.setTWH = this.setPictureBoxTWH;
            InitializeComponent();
           
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Image aa = pictureBox1.Image;
            pictureBox1.ErrorImage = aa;
            //启动五个线程分别对PictureBox进行操作(改变Top的值,并将图像保存)
            Thread t1 = new Thread(new ThreadStart(pictureview1));
            Thread t2 = new Thread(new ThreadStart(pictureview2));
            Thread t3 = new Thread(new ThreadStart(pictureview3));
            Thread t4 = new Thread(new ThreadStart(pictureview4));
            Thread t5 = new Thread(new ThreadStart(pictureview5));
            exit.Reset();
            t1.Start();
            t2.Start();
            t3.Start();
            t4.Start();
            t5.Start();
        }
        public delegate void controlAxtiveDelegate2(int top);//定义一个委托
        //在定义一个委托变量:
        private controlAxtiveDelegate2 setTop;        private void setPictureBoxTop(int top)
        {
            pictureBox1.Top = top;
            pictureBox1.Refresh();
        }        private void pictureBoxInvoke(int top)
        {
            lock (pic_obj)
            {
                if (pictureBox1.IsHandleCreated)
                {
                    pictureBox1.Invoke(setTop, top);
                }
            }
        }
        private static object pic_obj = new object();        private static EventWaitHandle exit = new EventWaitHandle(false, EventResetMode.ManualReset);
        private void pictureview1()
        {
            while (true)
            {
                if (exit.WaitOne(0, false))
                {
                    break;
                }
                pictureBoxInvoke(100);//委托给主线程改变pictureBox.Top = 100;
                lock (pic_obj)
                {
                    try
                    {
                        Image img = pictureBox1.Image;
                        string imgStr = folder + @"\" + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + ".jpg";
                        img.Save(imgStr, System.Drawing.Imaging.ImageFormat.Jpeg);
                    }
                    catch (Exception ee)
                    {
                        MessageBox.Show("保存图像模块1" + ee.ToString());
                    }
                }
                Thread.Sleep(50);
            }//while
        }
        private void pictureview2()
        {
            while (true)
            {
                if (exit.WaitOne(0, false))
                {
                    break;
                }
                pictureBoxInvoke(10);
                lock (pic_obj)
                {
                    try
                    {
                        Image img = pictureBox1.Image;
                        string imgStr = folder + @"\" + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + ".jpg";
                        img.Save(imgStr, System.Drawing.Imaging.ImageFormat.Jpeg);
                    }
                    catch (Exception ee)
                    {
                        MessageBox.Show("保存图像模块2" + ee.ToString());
                    }
                }
                Thread.Sleep(50);
            }//while
        }
        

解决方案 »

  1.   

    private void pictureview3()
            {
                while (true)
                {
                    if (exit.WaitOne(0, false))
                    {
                        break;
                    }
                    pictureBoxInvoke(40);
                    lock (pic_obj)
                    {
                        try
                        {
                            Image img = pictureBox1.Image;
                            string imgStr = folder + @"\" + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + ".jpg";
                            img.Save(imgStr, System.Drawing.Imaging.ImageFormat.Jpeg);
                        }
                        catch (Exception ee)
                        {
                            MessageBox.Show("保存图像模块3" + ee.ToString());
                        }
                    }
                    Thread.Sleep(50);
                }//while
            }
            private void pictureview4()
            {
                while (true)
                {
                    if (exit.WaitOne(0, false))
                    {
                        break;
                    }
                    pictureBoxInvoke(20);
                    lock (pic_obj)
                    {
                        try
                        {
                            Image img = pictureBox1.Image;
                            string imgStr = folder + @"\" + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + ".jpg";
                            img.Save(imgStr, System.Drawing.Imaging.ImageFormat.Jpeg);
                        }
                        catch (Exception ee)
                        {
                            MessageBox.Show("保存图像模块4" + ee.ToString());
                        }
                    }
                    Thread.Sleep(50);
                }//while
            }
            private void pictureview5()
            {
                while (true)
                {
                    if (exit.WaitOne(0, false))
                    {
                        break;
                    }
                    pictureBoxInvoke(90);
                    lock (pic_obj)
                    {
                        try
                        {
                            Image img = pictureBox1.Image;
                            string imgStr = folder + @"\" + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + ".jpg";
                            img.Save(imgStr, System.Drawing.Imaging.ImageFormat.Jpeg);
                        }
                        catch (Exception ee)
                        {
                            MessageBox.Show("保存图像模块5" + ee.ToString());
                        }
                    }
                    Thread.Sleep(50);
                }//while
            }
            //多个参数
            public delegate void controlAxtiveDelegate3(int[] value);//定义一个的委托
            //在定义一个委托变量:
            private controlAxtiveDelegate3 setTWH;        private void setPictureBoxTWH(int[] value)
            {
                try
                {
                    lock (pic_obj)
                    {
                        pictureBox1.Top = value[0];
                        pictureBox1.Width = value[1];
                        pictureBox1.Height = value[2];
                        pictureBox1.Refresh();
                    }
                }
                catch (Exception ee)
                {
                    MessageBox.Show("setPictureBoxTWH" + ee.ToString());
                }
            }        private void pictureBoxTWHInvoke(int[] top)
            {
                try
                {
                    this.pictureBox1.Invoke(setTWH, top);
                }
                catch (Exception ee)
                {
                    MessageBox.Show("pictureBoxTWHInvoke" + ee.ToString());
                }
            }        private void button2_Click(object sender, EventArgs e)
            {
                exit.Set();
            }        private string folder = "";
            private void button3_Click(object sender, EventArgs e)
            {
                if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
                {
                    folder = folderBrowserDialog1.SelectedPath;
                    textBox1.Text = folder;
                }
            }        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
            {
                foreach (System.Diagnostics.Process pp in System.Diagnostics.Process.GetProcessesByName("WindowsApplication1.vshost"))
                {
                    pp.Kill();
                }
                foreach (System.Diagnostics.Process pp in System.Diagnostics.Process.GetProcessesByName("WindowsApplication1"))
                {
                    pp.Kill();
                }
            }
        }
    }
      

  2.   

    太长了 不知道你的目的,如果只是想让图片变换
     用IMAGELIST和TIMER控件就可以搞定的。