С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
-1 / 0 / 0
Регистрация: 11.11.2013
Сообщений: 75

Потоки и доступ к элементам из них

26.06.2016, 10:21. Показов 1314. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Делаю приложение для получения некоторой информации из ВК средствами браузера awesomium, ибо встроенный в C# браузер вк не воспринимает.

В этом браузере эвент загрузки документа не работает, но есть костыли для этого дела. В общем, я загнался, возможно полез в дебри совсем.

Задача. Поочередно открыть две ссылки ВК, со второй ссылки получить текст. Но они не успевают прогрузиться, а как сделать так, чтоб они грузились по очереди - не понимаю. С потоками не сложилось, т.к. не могу в цикле проверять загрузку документа.

Посоветуйте, как поступить.

C#
1
2
3
4
5
6
7
while(true){
Thread.Sleep(500);
if (!webControl1.IsLoading) //Тут ругается про доступ из потока. Но я не понимаю, как ему invoke туда запихать.
{
//...
}
}
Добавлено через 9 часов 39 минут
up, ночью создал, уже уехало вниз
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.06.2016, 10:21
Ответы с готовыми решениями:

Доступ к элементам класса
Здравствуйте, стал изучать C# совсем недавно, нужна ваша помощь. Имеется две формы и класс. Класс using System; using...

Упрощенный доступ к элементам класса
Имеется код вида СlassName.Metod1(); СlassName.Metod2(); СlassName.Metod3(); Есть ли в c# возможность избежать...

Как получить доступ к элементам List<T>?
В msdn написано что у класса List&lt;T&gt; есть свойство Item, через которое можно получить доступ к элементу по индексу(скриншот прилагается). ...

10
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
26.06.2016, 10:23
Лучший ответ Сообщение было отмечено Rius как решение

Решение

minedroid, просто дождаться загрузки страницы вот тут писал как. И вы уверены, что для этой задачи вообще нужен Awesomium, а не просто запрос через VK API?
0
Эксперт .NET
 Аватар для Rius
13050 / 7616 / 1664
Регистрация: 25.05.2015
Сообщений: 23,160
Записей в блоге: 14
26.06.2016, 11:05
Лучший ответ Сообщение было отмечено minedroid как решение

Решение

Цитата Сообщение от minedroid Посмотреть сообщение
ибо встроенный в C# браузер вк не воспринимает
Справедливости ради - воспринимает. Ибо встроенного браузера нет, есть движок IE из операционной системы.
Включить совместимость с последней версией можно программно:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
        private void SetCompatibilityMode()
        {
            // [url]https://blogs.msdn.microsoft.com/patricka/2015/01/12/controlling-webbrowser-control-compatibility/[/url]
            // [url]https://msdn.microsoft.com/library/ee330730(v=vs.85).aspx#browser_emulation[/url]
 
            string path = @"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION";
 
            try
            {
                using (RegistryKey key = Registry.CurrentUser.OpenSubKey(
                    path,
                    RegistryKeyPermissionCheck.ReadWriteSubTree,
                    System.Security.AccessControl.RegistryRights.ReadKey | System.Security.AccessControl.RegistryRights.SetValue))
                {
                    string appName = Path.GetFileNameWithoutExtension(Application.ExecutablePath).ToLower();
 
                    var valuesToSet = new[] {
                    new { Name = appName + ".exe", Value = 11001u },
                    new { Name = appName + ".vshost.exe", Value = 11001u }
                };
 
                    foreach (var valueToSet in valuesToSet)
                    {
                        UInt32 stored = Convert.ToUInt32(key.GetValue(valueToSet.Name, 0));
 
                        if (stored != valueToSet.Value)
                        {
                            key.SetValue(valueToSet.Name, valueToSet.Value, RegistryValueKind.DWord);
                        }
                    }
                }
            }
            catch
            {
            }
        }
Но приоритет использования VK API выше.
1
-1 / 0 / 0
Регистрация: 11.11.2013
Сообщений: 75
26.06.2016, 11:49  [ТС]
VK API здесь не подойдет, костыли с запросами, которые в апи не могут быть. Мог бы на апи - не писал бы сюда.

Цитата Сообщение от Rius Посмотреть сообщение
Включить совместимость с последней версией можно программно
Спасибо, сработало. Этот код можно оставить в мейне? Не будет он лишнего творить при запуске?
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
26.06.2016, 12:12
По мне так лучше уж использовать Awesomium, который более самодостаточен, чем мучиться с IE. А суть задачи от этого практически не меняется.
0
Эксперт .NET
 Аватар для Rius
13050 / 7616 / 1664
Регистрация: 25.05.2015
Сообщений: 23,160
Записей в блоге: 14
26.06.2016, 12:15
minedroid, теоретически не будет ничего творить ужасного.
Только зоопарк IE на Windows это большая головная боль. Запустите на старом ПК и всё накроется.
0
-1 / 0 / 0
Регистрация: 11.11.2013
Сообщений: 75
26.06.2016, 13:35  [ТС]
Цитата Сообщение от EvilFromHell Посмотреть сообщение
лучше уж использовать Awesomium
Цитата Сообщение от EvilFromHell Посмотреть сообщение
А суть задачи от этого практически не меняется
Если бы в Awesomium'е работало событие загрузки по-человечески, а из-за его отсутствия приходится пилить лишние костыли.
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
26.06.2016, 13:36
minedroid, что в нем не работает по-человечески, но при этом работает в веббраузере-можете пояснить толком? Я сколько пользуюсь-все нормально работает. То, на что я кидал ссылку, вам не подходит?
0
-1 / 0 / 0
Регистрация: 11.11.2013
Сообщений: 75
26.06.2016, 13:56  [ТС]
EvilFromHell, не работает событие DocumentReady. Срабатывает раньше, чем нужно.
Я уже почти доделал на обычном браузере, софт для локального использования, так что его полная работоспособность не так важна, все можно будет поправить в процессе с:

Да и не требует обычный браузер библиотек всяких библиотек.

Да. Вчера я пилил поверх примера свой код, оставил только окошко браузера и пару кнопок. Сегодня окошко браузера исчезло О_о . Так что имхо проще париться с обычным браузером.
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
26.06.2016, 14:03
Цитата Сообщение от minedroid Посмотреть сообщение
EvilFromHell, не работает событие DocumentReady. Срабатывает раньше, чем нужно.
Повторю вопрос-чем не подходит способ дождаться загрузки, указанный мною по ссылке?
Цитата Сообщение от minedroid Посмотреть сообщение
Да и не требует обычный браузер библиотек всяких библиотек.
Он завязан эксплорер, что намного хуже. Как уже написали выше:
Цитата Сообщение от Rius Посмотреть сообщение
Только зоопарк IE на Windows это большая головная боль. Запустите на старом ПК и всё накроется.
Awesomium же самодостаточен-все необходимые для него библиотеки можно распространять вместе с вашим софтом.
Цитата Сообщение от minedroid Посмотреть сообщение
Да. Вчера я пилил поверх примера свой код, оставил только окошко браузера и пару кнопок. Сегодня окошко браузера исчезло О_о . Так что имхо проще париться с обычным браузером.
Никак не прокомментирую, как как не понял о чем речь.

Добавлено через 53 секунды
Да, и работа с JS лично на мой взгляд в Awesomium реализована намного удобнее, а я лично именно ради JS его и использую.
2
-1 / 0 / 0
Регистрация: 11.11.2013
Сообщений: 75
26.06.2016, 15:55  [ТС]
EvilFromHell,
да, в общем я взял себя в руки, удалил к чертям проект с WebBrowser'ом и написал по вашему примеру все на awesomium'е. То, что я делал там так долго с вашим кодом получилось за пару минут, есессна.

Но лучшим ответом оставлю все же тот, т.к. подобного я не нашел, хотя косвенно и искал.

Не по теме:

А по поводу того, что у меня компонент браузера пропал из предыдущего проекта - я просто Awesomium не установил, а просто пример запустил и все)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.06.2016, 15:55
Помогаю со студенческими работами здесь

Как получить доступ к элементам списка?
У меня есть список в который заносятся значения полей из БД private void loginButton_Click(object sender, EventArgs e) { ...

Доступ к элементам трехмерного массива Java vs .NET
Здравствуйте, товарищи! Пусть имеет некоторый трехмерный массив, инициализированный какими-то значениями: double arr; ...

Монопольный доступ к элементам массива -- это как?
Задание на вложенном снимке, гугл не нашел, за помощь или подсказку огромное спасибо

Dictionnary и Hashtable: Где доступ к элементам быстрее?
Несколько вопросов: 1. Обе коллекции хранят пары ключ значения, отличается способ хранения элементов и доступа к ним. Правильно понимаю? ...

Организовать доступ к элементам очереди из двух потоков
1 поток добавляет элементы в очередь. 2 дргуих должны счиать кждый элемент очереди. Как наилучшим образом организовать считываение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru