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

Узнай цену своей работы

Формулировка задачи:

Делаю приложение для получения некоторой информации из ВК средствами браузера awesomium, ибо встроенный в C# браузер вк не воспринимает. В этом браузере эвент загрузки документа не работает, но есть костыли для этого дела. В общем, я загнался, возможно полез в дебри совсем. Задача. Поочередно открыть две ссылки ВК, со второй ссылки получить текст. Но они не успевают прогрузиться, а как сделать так, чтоб они грузились по очереди - не понимаю. С потоками не сложилось, т.к. не могу в цикле проверять загрузку документа. Посоветуйте, как поступить.
while(true){
Thread.Sleep(500);
if (!webControl1.IsLoading) //Тут ругается про доступ из потока. Но я не понимаю, как ему invoke туда запихать.
{
//...
}
}
up, ночью создал, уже уехало вниз

Решение задачи: «Потоки и доступ к элементам из них»

textual
Листинг программы
        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
            {
            }
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5
Похожие ответы