我用CEFSharp替换了C#WinForms应用程序中的xulrunner。一切始于美好-我投入了CEF,并毫不费力地启动并运行了它。
现在,我遇到了线程问题,并且不确定如何解决这些问题的最佳方法。我在Javascript中有多个调用表单代码的功能,反之亦然。这样的事情...
public void ZoomFinished(string data)
{
try
{
bool finished = false;
if (!_firstTileRun)
{
_tileBounds = JsonConvert.DeserializeObject<Bounds>(data); // Save tile from previous run
Models.PointD nePoint = _tileBounds.NE.Point;
Models.PointD swPoint = _tileBounds.SW.Point;
int tileWidth = (int)(nePoint.X - swPoint.X);
int tileHeight = (int)(swPoint.Y - nePoint.Y);
// Save tile from previous run
int mapWidth = this.Width;
int mapHeight = this.Height;
Point browserLocation = webBrowser1.PointToScreen(Point.Empty);
....
当我尝试调用Web浏览器的方法时,我抱怨自己的线程不正确。我应该尝试调用这些电话吗?还是尝试运行自己的消息循环来避免多个线程更容易? (虽然似乎没有很多示例!)。当然,CEF Web浏览器与其主机应用程序之间必须存在一种“适当”的通信方式,而不会遇到线程问题?