首页 > 解决方案 > CEF 线程问题 - 最简单的修复?

问题描述

我正在用 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 浏览器与其主机应用程序之间进行通信,而不会遇到线程问题?

标签: c#winformschromium-embedded

解决方案


推荐阅读