У меня есть сайт обмена трафиком, и я хочу преобразовать его в приложение Windows, используя C# winform с Awesomium 1.7.5. Базовая установка готова, но есть проблема с Awesomium. После посещения нескольких сайтов замедляется и полностью замораживается (не реагирует).Awesomium freezes/not отвечает
public Form1()
{
InitializeComponent();
Text = "Traffic Exchange";
WindowState = FormWindowState.Maximized;
timer1 = new System.Windows.Forms.Timer();
timer1.Tick += new EventHandler(timer1_Tick);
int user_id = Properties.Settings.Default.user_id;
string user_id_s = user_id.ToString();
toolStripLabel2.Text = user_id_s;
if (Properties.Settings.Default.user_id == 0)
{
toolStripLabel3.Visible = true;
toolStripButton3.Visible = false;
}
else
{
toolStripButton3.Visible = true;
toolStripLabel3.Visible = false;
}
}
private void toolStripButton3_Click_1(object sender, EventArgs e)
{
// starting the traffic traffic exchange
LoadUrl();
StartTimer();
}
private void LoadUrl()
{
try
{
string MyConnection2 = "*******";
string Query = "select * from ****** where status = 1 AND credits > 5 ORDER BY rand() LIMIT 1";
MySqlConnection MyConn2 = new MySqlConnection(MyConnection2);
MySqlCommand MyCommand2 = new MySqlCommand(Query, MyConn2);
MyConn2.Open();
using (MySqlDataReader DR = MyCommand2.ExecuteReader())
{
while (DR.Read())
{
string WebURL = Convert.ToString(DR.GetValue(*));
string WebSurfSec = Convert.ToString(DR.GetValue(*));
int result = Convert.ToInt32(WebSurfSec);
int sec_to_mil = result * 1000;
toolStripLabel5.Text = WebSurfSec;
//toolStripStatusLabel2.Text = result.ToString();
//toolStripStatusLabel3.Text = sec_to_mil.ToString();
webControl3.Source = new Uri(WebURL);
toolStripTextBox1.Text = WebURL;
toolStripLabel6.Text = toolStripTextBox1.Text;
timer1.Interval = sec_to_mil; // in miliseconds
}
}
MyConn2.Close();
// WebCore.ReleaseMemory();
// webControl3.Update();
// Thread.Sleep(500);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void timer1_Tick(object sender, EventArgs e)
{
LoadUrl();
}
private void StartTimer()
{
timer1.Start();
}
So LoadUrl()
Это петля. Когда приложение запускается на веб-сайте обмена трафиком, немного медленнее, но он работает, и вы можете перейти от страницы к другой без замораживания, но когда обмен в действии (LoadUrl()
) через 5 минут приложение будет мертвым. Я искал решение весь день и ничего не получал, не смог найти решение проблемы.
Почему вы воссоздаете таймер каждый раз, когда он петли? Вам нужно только создать его один раз в конструкторе для формы, таймер автоматически сбрасывается. –
Спасибо за это, обновим код. – rgerculy
Вы все еще начинаете его снова и снова, а также сбрасываете интервал. Просто сделайте это один раз в кнопке, затем не изменяйте таймер в цикле вообще или не запустите его снова (его уже запущено). –