Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2013, 14:19   #1
Senk
 
Регистрация: 07.02.2008
Сообщений: 4
Смущение C# WPF Зависает форма при использовании awesomium (замена webbrowser)

Каждые 5 секунд загружается то одна то другая страница. Через некоторые время форма просто зависает. Обычно зависает на ~30 - 500 загрузке страницы. В чем тут проблема может быть?

PHP код:
namespace WpfApplication1
        
{
            public 
partial class MainWindow Window
            
{
                public 
MainWindow()
                {
                    
InitializeComponent();
                }
                
WebView WV WebCore.CreateWebView(640480);
                private 
void btn_start_Click(object senderRoutedEventArgs e)
                {
                    
WV.Source = new Uri("http://www.steamgifts.com");
                    
CreateTimer();
                    
timer.Start();
                }
         
                
System.Windows.Threading.DispatcherTimer timer = new System.Windows.Threading.DispatcherTimer();
                
void CreateTimer()
                {
                    
timer.Tick += new EventHandler(timer_Tick);
                    
timer.Interval = new TimeSpan(005);
                }
         
                private 
void btn_stop_Click(object senderRoutedEventArgs e)
                {
                    
timer.Stop();
                }
         
                
int i 1;
                private 
void timer_Tick(object senderEventArgs e)
                {
                    if (
== 1)
                    {
                        
WV.Source "http://www.steamgifts.com/forum".ToUri();
                        
//Web.ExecuteJavascript("location.href='http://www.steamgifts.com/forum'");
                        
listView1.Items.Insert(0"steamgifts/forum - " WV.Title i);
                    }
                    else
                    {
                        
WV.Source "http://www.steamgifts.com".ToUri();
                        
//Web.ExecuteJavascript("location.href='http://www.steamgifts.com'");
                        
listView1.Items.Insert(0"steamgifts.com - " WV.Title i);
                    }
                    
lbl_amount.Content = (i++).ToString();
                }
            }
        }
    
    
        <
Window x:Class="WpfApplication1.MainWindow"
                
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                
Title="MainWindow" Height="350" Width="773" xmlns:my="http://schemas.awesomium.com/winfx">
            <
Grid>
                <
ListView Height="287" HorizontalAlignment="Left" Margin="453,12,0,0" Name="listView1" VerticalAlignment="Top" Width="285" />
                <
Button Content="start" Height="23" HorizontalAlignment="Left" Margin="12,12,0,0" Name="btn_start" VerticalAlignment="Top" Width="75" Click="btn_start_Click" />
                <
Button Content="stop" Height="23" HorizontalAlignment="Left" Margin="102,12,0,0" Name="btn_stop" VerticalAlignment="Top" Width="75" Click="btn_stop_Click" />
                <
Label Content="Label" Height="28" HorizontalAlignment="Left" Margin="383,11,0,0" Name="lbl_amount" VerticalAlignment="Top" Width="64" />
                <
my:WebControl HorizontalAlignment="Left" Margin="12,53,0,0" Name="Web" VerticalAlignment="Top" Height="246" Width="435" />
            </
Grid>
        </
Window
Senk вне форума Ответить с цитированием
Старый 15.10.2013, 14:49   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

а в супорте что говорят?
eval вне форума Ответить с цитированием
Старый 15.10.2013, 14:55   #3
Senk
 
Регистрация: 07.02.2008
Сообщений: 4
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
а в супорте что говорят?
Ничего не говорят. Молчат как рыбы.
Senk вне форума Ответить с цитированием
Старый 17.10.2013, 11:15   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Каждые 5 секунд загружается то одна то другая страница.
А чего оно не ждет пока страница полностью загрузится?

Насчет 30 страниц странно, но вообще в Awesomium есть разные проблемы с утечкой, так что стоит пересоздавать его каждые 100-200 страниц (можно с сохранением сессии), иначе может Crash'нуться через какое-то время + памяти много сожрет. Но именно crash (сработает соответствующий эвент и т.д.), а не зависание.

Почему зависает форма не понял, но на самом деле зависает именно только форма: можно повесить breakpoint в таймер и будет видно, что оно дальше идет и пишет.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 17.10.2013, 15:44   #5
Senk
 
Регистрация: 07.02.2008
Сообщений: 4
Смущение

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А чего оно не ждет пока страница полностью загрузится?

Насчет 30 страниц странно, но вообще в Awesomium есть разные проблемы с утечкой, так что стоит пересоздавать его каждые 100-200 страниц (можно с сохранением сессии), иначе может Crash'нуться через какое-то время + памяти много сожрет. Но именно crash (сработает соответствующий эвент и т.д.), а не зависание.

Почему зависает форма не понял, но на самом деле зависает именно только форма: можно повесить breakpoint в таймер и будет видно, что оно дальше идет и пишет.
Если я использую контрол для вывода исходника страницы, то вешается только один контрол, а все остальное работает. Это происходит на 800+ странице. Если же в контроле показывать полную страницу, то вешается вся форма, но при этом прога продолжает работать в течение примерно получаса. После чего вешается вся полностью.

Подскажите пожалуйста как можно реализовать пересоздание контрола с сохранением сессии? Буду очень благодарен.
Senk вне форума Ответить с цитированием
Старый 17.10.2013, 17:47   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну если windowless, то у WebCore.CreateWebView есть 3-й параметр — WebSession. Создать ее можно как-то так.
Код:
WebSession session = WebCore.CreateWebSession(new WebPreferences());
Еще можно DataPath у нее указать, чтоб в файл сохранялась.


Код:
            if (i > 0 && i % 100 == 0)
            {
                webView.Dispose();
                webView = WebCore.CreateWebView(640, 480, session );
            }
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 17.10.2013, 18:05   #7
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,120
По умолчанию

Senk

есть какая-то обоснованная причина для искользоания какого-то левого компонента? (awesomium)
тут даже не нужен WebBrowser, подойдет обычный WebRequest

Подскажите пожалуйста как можно реализовать пересоздание контрола с сохранением сессии?

сохраняй полученные куки.
или каждый раз логинься на SG
Rififi вне форума Ответить с цитированием
Старый 17.10.2013, 18:35   #8
Senk
 
Регистрация: 07.02.2008
Сообщений: 4
По умолчанию

При помощи WebRequest можно нажимать нужные кнопки? Если да, то можно пример?
Senk вне форума Ответить с цитированием
Старый 17.10.2013, 18:44   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Нажимать — нет, конечно. Можно посмотреть снифером HTTP запрос, который происходит при ее нажатии, и отправлять аналогично.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Форма зависает AcTiV Общие вопросы .NET 2 17.09.2013 17:42
WPF-WebBrowser Awesomium - Прекращение работы приложения valkiriy C# (си шарп) 5 09.04.2013 13:47
Зависает webbrowser vlad.md Работа с сетью в Delphi 1 22.02.2011 22:09
При выполнении кода форма зависает. Как вывести прогрессбар? plato Общие вопросы Delphi 4 06.01.2010 15:37
конфликт разделителей чисел при использовании ControlSource (excel + форма vba) alvazor Microsoft Office Excel 2 06.07.2009 12:24