Здраствуйте есть вопрос. Я меняю изображения по цыклу. PictureBox зависает. И показывает только последнию картинку. Как исправить... BackGroundWorker не помогает!
массивкартинок for(int i=0;i<массивкартинок.lenght;i++) { picbox.image=массивкартинок; appications.doevents; thread.sleep(1000); } или я не совсем понял задачу)
Задачу ты понел правильно. Мне нужно так - я делаю скрин дектопа отображаю и так по циклу и но оно зависает (PictureBox зависает)
Code: using System.Threading; на кнопку или че там у тебя Thread mainThread = new Thread(new ThreadStart(MainFunc)); mainThread.Start(); и сама функция для потока public void MainFunc() { for(int i=0;i<массивкартинок.lenght;i++) { picbox.image=массивкартинок[i]; Thread.sleep(1000); } } При дебаге будут ошибки, потому что надо юзать InvokeRequired, запускай без дебага (ctrl+F5) до этого твой слип вешал всю форму, конечно ничего и не увидишь, doevents по идее должен был помочь, но я его не юзаю. и бэкграунд воркер тоже помочь должен, видимо ты юзал как-то криво.
мда... Вот весь твой код button1 собирает картинки button2 запускает background worker PHP: private List<Image> _images = new List<Image>(); private void button1_Click(object sender, EventArgs e) { var dirInfo = new DirectoryInfo(Application.StartupPath); foreach (var fileInfo in dirInfo.GetFiles("*.png")) { _images.Add(new Bitmap(fileInfo.FullName)); } } private void button2_Click(object sender, EventArgs e) { backgroundWorker1.RunWorkerAsync(); } private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { foreach (var image in _images) { Thread.Sleep(2000); backgroundWorker1.ReportProgress(-1, image); } } private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) { pictureBox1.Image = (Image) e.UserState; } ...