I need help to point out the bottleneck of my app. I am using geckofx browser control in winforms app, running on winxp sp3. Click event propagate to dom so slow - it might take up to couple seconds. Some log records with nlog
…
2015-03-30 19:05:26.3085 TRACE WM_LBUTTONDOWN
2015-03-30 19:05:27.0585 TRACE DomClick -Gecko.DOM.GeckoButtonElement
…
There is no such problem in win7 - it running fast on it. Here code of my mainform MainForm.cs
….
public MainForm()
{
InitializeComponent();
this.WindowState = FormWindowState.Maximized;
//catching win messages
Application.AddMessageFilter(this);
Gecko.GeckoPreferences.User["layers.accelerate-all"] = true;
this.Load += MainForm_Load;
}
void MainForm_Load(object sender, EventArgs e)
{
LogAllEvents();
}
…
private void LogAllEvents()
{
geckoWebBrowser.WindowSetBounds += (s, e) => { _logger.Trace("WindowSetBounds - " + e.Bounds); };
geckoWebBrowser.Paint += (s, e) => { _logger.Trace("Paint -" + e.ClipRectangle); };
geckoWebBrowser.Invalidated += (s, e) => { _logger.Trace("Invalidated -" + e.InvalidRect); };
geckoWebBrowser.DomClick += (s, e) => { _logger.Trace("DomClick -" + e.Target.ToString()); };
geckoWebBrowser.DocumentCompleted += (s, e) => { _logger.Trace("DocumentCompleted -" ); };
}
public bool PreFilterMessage(ref Message m)
{
if (m.Msg == WM_LBUTTONDOWN)
{
_logger.Trace("WM_LBUTTONDOWN");
return false;
}
else
if (m.Msg == WM_LBUTTONUP)
{
_logger.Trace("WM_LBUTTONUP");
return false;
}
else
return false;
}
MainForm.Designer.cs
…
// BrowserHolder
//
this.BrowserHolder.Controls.Add(this.geckoWebBrowser);
this.BrowserHolder.Dock = System.Windows.Forms.DockStyle.Fill;
this.BrowserHolder.Location = new System.Drawing.Point(0, 28);
this.BrowserHolder.Name = "BrowserHolder";
this.BrowserHolder.Size = new System.Drawing.Size(1180, 554);
this.BrowserHolder.TabIndex = 2;
//
// geckoWebBrowser
//
this.geckoWebBrowser.Dock = System.Windows.Forms.DockStyle.Fill;
this.geckoWebBrowser.Location = new System.Drawing.Point(0, 0);
this.geckoWebBrowser.Name = "geckoWebBrowser";
this.geckoWebBrowser.Size = new System.Drawing.Size(1180, 554);
this.geckoWebBrowser.TabIndex = 0;
this.geckoWebBrowser.UseHttpActivityObserver = false;
…
BrowserHolder is panel that wrap webbrowser control.
I don’t have any clue what’s going on, cpu usage under 10 percent. Here’s my machine: ms windows embedded POSready 2009 ver2.0 service pack3 Intel Atom D2500 ,1.86 ghz ,1.98 gb of ram Geckofx 16 and 31 –same result – very slow click
Aucun commentaire:
Enregistrer un commentaire