Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / в каком потоке выполняется InitializeComponent()? / 2 сообщений из 2, страница 1 из 1
16.11.2010, 10:57
    #36958878
testing22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
в каком потоке выполняется InitializeComponent()?
Скажите, а при создании окна в новом потоке, когда выполняется InitializeComponent() этого окна, он (и идущий за ним код) выполняется разве не в этом-же созданном потоке потоке? Я создаю окно указанным ниже способом, а в конструкторе, сразу после InitializeComponent() заполняю Source1 и Source2 данными. Периодически получаю ошибку при попытке добавить элемент в Source1 или Source2, что выполнение происходит не в потоке диспетчера. Отчего так?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
            Thread t2 = new Thread(() =>
            {
                MyWindow = new MyWindow();
                MyWindow.Show();
                MyWindow.Closed += (sender2, e2) => MyWindow.Dispatcher.InvokeShutdown();
                MyWindow.dgr1.ItemsSource = Source1;
                MyWindow.dgr2.ItemsSource = Source2;
                System.Windows.Threading.Dispatcher.Run();
            });
            t2.IsBackground = true;
            t2.Name = "MyWindow Thread";
            t2.SetApartmentState(ApartmentState.STA);
            t2.Start();
...
Рейтинг: 0 / 0
11.12.2010, 01:07
    #37008463
Denis Gladkikh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
в каком потоке выполняется InitializeComponent()?
testing22,

все окна, и их обработка работает в одном и том же потоке, на который есть ссылка в Dispatcher. Не думал что WPF/SL разрешать создавать окна в другом потоке вообще. Но в принципе, если разрешил, то его обработка происходит в потоке Dispatcher, установку свойств нужно делать именно в нем же. Просто логически нереально, чтобы окна, их обработка сообщений была в другом потоке, отличном от главного.
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / в каком потоке выполняется InitializeComponent()? / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]