Потоки и доступ к элементам из них - 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
{
}
}