将 C# float 数组传递到 CefSharp 中的 Javascript

问题描述 投票:0回答:1

我正在 WPF 项目中进行开发,并使用 CefSharp.wpf 连接到我的 html/javascript 脚本。该脚本位于我的电脑本地。 目前,我必须将 C# 浮点数组转换为字符串,这需要很长时间(192 毫秒)。 之所以需要这么长的时间,是因为数组的长度超过 200000。 主要问题是这个数组每秒必须发送 30 次,每次都有不同的值。

我的想法是将指向数组位置的指针发送到网站,这样它就可以直接获取最新版本,但我还没有找到解决方案。 有谁知道我如何才能实现这一目标?

javascript c# cefsharp
1个回答
4
投票

您可以使用 CefSharp 的

RegisterJsObject
方法将 C# 对象绑定到 JavaScript,然后直接从 JavaScript 访问浮点数组。

public class FloatArrs
{
    public float[] FloatArr { get; set; }
}
FloatArrs floatArrs = new FloatArrs();
chromiumWebBrowser.JavascriptObjectRepository.Settings.LegacyBindingEnabled= true;
chromiumWebBrowser.JavascriptObjectRepository.Register("myFloatArrs", floatArrs, isAsync:false);

您可以像

var arr = myFloatArrs.FloatArr;

一样访问

还有更新

floatArras.FloatArr = updatedFloatArr;
chromiumWebBrowser.ExecuteScriptAsync("updateFloatArr()");

在 JavaScript 代码中,定义一个对数组更新做出反应的函数

updateFloatArr

// JavaScript function to handle the array update
function updateFloatArr() {
    var myFloatArr = myFloatArrs.FloatArr;
}

这样,您就可以直接从 JavaScript 访问浮点数组,而无需将其转换为字符串。

© www.soinside.com 2019 - 2024. All rights reserved.