0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 9
|
||||||
1 | ||||||
.NET 4.x Не получается с вторичного потока обратиться напрямую к объекту из главного потока19.04.2012, 18:15. Показов 6330. Ответов 18
Метки нет (Все метки)
Добрый день. Проблема заключается в том что не могу в WPF с вторичного потока обратится на прямую к объекту из главного потока. WPF пока только начинаю учить и застрял на вот такой проблеме и не могу никак сдвинутся с места.
Я пробовал использовать и Диспетчер с делегатом и пытался даже что то получить через Interlocked. Но видимо не хватает знаний и навыка что б решить эту проблему. Прошу помощи , а то я уже не первый день в тупике...
0
|
19.04.2012, 18:15 | |
Ответы с готовыми решениями:
18
Изменение состояния контролов из вторичного потока Invoke из главного потока во второй Обращение к объекту из другого потока Подписаться из главного потока на свойство дочернего |
I ♥ C#
470 / 261 / 25
Регистрация: 07.05.2010
Сообщений: 567
|
|
19.04.2012, 20:02 | 2 |
.Invoke()
0
|
0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 9
|
||||||
20.04.2012, 00:16 [ТС] | 3 | |||||
Хм.. а можно по подробней?
Я пробовал таким макаром но нечего не выходило:
0
|
17 / 17 / 2
Регистрация: 23.02.2012
Сообщений: 132
|
||||||
20.04.2012, 10:19 | 4 | |||||
На сколько я понял, там немного все сложнее.
Вот например так получается запросто:
1
|
I ♥ C#
470 / 261 / 25
Регистрация: 07.05.2010
Сообщений: 567
|
||||||
20.04.2012, 13:41 | 5 | |||||
Invoke нужно вызывать из того потока, в котором вы хотите выполнить действие. Например, если вы хотите изменить содержимое кнопки из другого потока, то нужно вызвать Invoke из потока с кнопкой:
1
|
17 / 17 / 2
Регистрация: 23.02.2012
Сообщений: 132
|
||||||
20.04.2012, 14:15 | 6 | |||||
Смотри:
0
|
I ♥ C#
470 / 261 / 25
Регистрация: 07.05.2010
Сообщений: 567
|
||||||
20.04.2012, 16:28 | 7 | |||||
Исправленный пример автора:
0
|
17 / 17 / 2
Регистрация: 23.02.2012
Сообщений: 132
|
|
20.04.2012, 17:07 | 8 |
Delog, Извини конечно, но какой смысл тогда в другом потоке открывать документ в richTextBox, если ты все делаешь в основном? На сколько я понял, автор хотел в фоновом загрузить документ в richTextBox, а при выполнении этого кода прога все равно зависнет, пока не заполнит richTextBox. Да и написал ты то же самое, что и я предлагал.
0
|
0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 9
|
|||||||||||
20.04.2012, 18:53 [ТС] | 9 | ||||||||||
Wurgengel, твой пример без условно правильный. Если пользоватся твоим примером то он не будет не чем отличатся от последнего примера Delog'a, вся операция будет проводится в главном потоке. Во избежания этого я хочу сформировать параграф в отдельном потоке.
0
|
Українець
424 / 318 / 16
Регистрация: 26.09.2009
Сообщений: 844
|
||||||
20.04.2012, 19:27 | 10 | |||||
0
|
0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 9
|
|
21.04.2012, 17:03 [ТС] | 11 |
Хм.. а можно по подробней, как это использовать?
0
|
Українець
424 / 318 / 16
Регистрация: 26.09.2009
Сообщений: 844
|
||||||
21.04.2012, 17:25 | 12 | |||||
1
|
0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 9
|
|
21.04.2012, 23:44 [ТС] | 13 |
Да но проблема таким способом не решается. Компилятор не может связать два объекта разных потоков.
0
|
Українець
424 / 318 / 16
Регистрация: 26.09.2009
Сообщений: 844
|
||||||
22.04.2012, 00:52 | 14 | |||||
у вас ошибка вылетает?
1
|
I ♥ C#
470 / 261 / 25
Регистрация: 07.05.2010
Сообщений: 567
|
||||||
22.04.2012, 09:35 | 15 | |||||
Автору уже видимо надоело отвечать на этот вопрос Да я и сам дал маху - на самом деле оказывается работа со ссылочными типами из разных потоков не то же самое, что работа с типами значений. Не знаю, как принято поступать в таких случаях, но я решил производить сериализацию и передвать строку в основной поток:
1
|
0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 9
|
|
23.04.2012, 00:40 [ТС] | 16 |
Спасибо , всё работает. Только придётся много времени потратить что б понять =) с Xml не знаком совершенно.
0
|
meatlow
|
|||||||||||
08.08.2014, 05:47 | 17 | ||||||||||
Я, конечно, опоздал на обсуждение. Но недавно нарвался на эту новость на форуме, т.к. у самого возникла такая проблема. Я в wpf недавно, скажу больше, я вообще в потоках не давно, так же как и в c#. Но, когда я работал с формами мне пришлось использовать делегаты, что бы обратиться к данным другого потока, и делал я так:
|
10.08.2014, 10:10 | 19 |
Для этого в WPF есть Dispatcher.CheckAccess.
0
|
10.08.2014, 10:10 | |
10.08.2014, 10:10 | |
Помогаю со студенческими работами здесь
19
Task. Обработка объектов главного потока. Обращение к объекту из другого потока. И немного WCF Безопасное обращение к объекту из потока его не создавшего Не получается обратиться к объекту после десериализации Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |