3

我已将 LuaInterface 项目嵌入到使用 .NET Framework 4.0 用 C# 编写的应用程序中。编译 LuaInterface 和 Lua 5.1 后,我在我的应用程序中引用了它们并创建了一个 Lua VM 并公开了一些 .NET 类。Lua VM 调用次数不多时,性能完全不受影响;但是当它开始调用大量 .NET 函数时,整个应用程序变得缓慢且无响应。

作为对此的回应,我创建了一个额外的线程来运行 Lua VM。但由于某种原因,当 Lua 执行函数调用时,更新 GUI 的线程不会更新,从而导致 GUI 卡顿。四处移动窗口时,您可以清楚地看到它一会没有响应,然后移动,没有响应等。

我该如何解决这个问题?我的印象是给 Lua 自己的线程,不同的线程不应该受到影响!这在某种程度上纯粹与我自己的代码有关吗?LuaInterface 调用 .NET 函数(性能方面)是否存在一些严重问题?我还能用什么?

4

1 回答 1

0

我没有尝试针对 .NET 4 编译 LuaInterface。到目前为止,我只使用了预编译的 dll。我知道您可以通过将 设置为零来加速 .NET 4 中的混合图像程序集。根据 MS:.NET Framework 4,流线型的互操作编组架构为从托管代码到非托管代码的转换提供了显着的性能改进。

http://msdn.microsoft.com/en-us/library/ff361650.aspx

让我们更新,以防您找到适合您的技巧。在 Visual Studio 2010 中,您实际上可以针对 .NET 2 进行构建,所以如果我是您,我会尝试创建一个虚拟应用程序并针对多个目标进行编译。它可能会帮助您量化使用 .NET 4 时的速度下降。

如果您给我们一些代码,也许我可以玩一下它并找出问题所在。我对 LuaInterface 真的很感兴趣,并且热衷于找出问题所在。

由于我没有代码示例,我只是在推测这一点;但问题可能与您的 UI 不是线程安全的有关。例如,Windows 窗体控件存在锁定问题是很常见的。

如何:对 Windows 窗体控件进行线程安全调用 http://msdn.microsoft.com/en-us/library/ms171728(v=vs.80).aspx

于 2011-02-22T14:30:09.557 回答