Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 25.11.2017, 14:58   #1
Auratos
Пользователь
 
Регистрация: 01.06.2015
Сообщений: 11
Репутация: 10
По умолчанию Не удается организовать новый поток

Добрый день. У меня есть класс для работы с файлами. В какой-то момент я заполняю коллекцию данными файлов из указанной директории.
Код:

public class PhotoCollection : ObservableCollection<Photo>
{
        public PhotoCollection() { }

        public PhotoCollection(string path) : this(new DirectoryInfo(path)) { }

        public PhotoCollection(DirectoryInfo directory)
        {
            _directory = directory;
            Update();
        }

        public string Path
        {
            set
            {
                _directory = new DirectoryInfo(value);
                Update();
            }
            get { return _directory.FullName; }
        }

        private void Update()
        {
            this.Clear();
            try
            {
                int cnt = 0;
                foreach (FileInfo f in _directory.GetFiles("*.jpg"))
                {
                    Add(new Photo(f.FullName, cnt));
                    cnt++;
                }

            }
            catch (DirectoryNotFoundException)
            {
                MessageBox.Show("Указанная директория не найдена!", "", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }

        DirectoryInfo _directory;
}

Хотелось бы вынести заполнение в новый поток. Но при попытке сделать так внутри класса:
Код:

private void LoadFiles()
{
     int cnt = 0;
     foreach (FileInfo f in _directory.GetFiles("*.jpg"))
     {
           Add(new Photo(f.FullName, cnt));
           cnt++;
           Thread.Sleep(0);
     }
}

Thread myThread = new Thread(LoadFiles); //Создаем новый объект потока (Thread)
myThread.Start(); //запускаем поток
myThread.Join();

Вылетает исключение: "Данный тип CollectionView не поддерживает изменения в своем SourceCollection из потока, отличного от потока Dispatcher." Почитал, что надо использовать Dispatcher.Invoke. Подскажите, пожалуйста, как правильно обернуть данный фрагмент кода Dispatcher.Invoke?
Auratos вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
.NET 4.x Передача в новый поток метода с параметрами из другого класса maxspace C# (си шарп) 1 25.03.2013 14:26
Организовать текстовый файл f, состоящий из N строк. Организовать замену символов в файле. "Старый" символ и "новый" символ запраш Richik123 Паскаль 1 14.06.2012 16:28
Организовать текстовый файл f, состоящий из N строк. Организовать замену символов в файле. "Старый" символ и "новый" символ запра Richik123 Паскаль 0 31.05.2012 17:32
Не удается связать поток+idHttp+прогресс бар grafgrial Общие вопросы Delphi 1 24.05.2011 15:46




01:42.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru