2011-08-30 66 views
0

我在使用LuaInterface編寫遊戲中的腳本。LuaInterface隨機例外

該腳本工作相當不錯,但不知何故,我得到了很多隨機例外。

我將問題縮小到了我從C#代碼調用lua函數的地方,這些代碼是從另一個線程調用的,處理與遊戲服務器的聯網。

我認爲正在發生的事情是,lua代碼正在運行,而lua函數是從另一個線程的C#調用的,這會導致隨機錯誤。

如何我打電話從C#的功能:

function.Call(message); 

功能型LuaFunction和消息是自定義對象。

錯誤我越來越:

  • 類型的第一個機會異常 'LuaInterface.LuaScriptException' 發生在LuaInterface.dll
  • 錯誤運行LUA:功能
  • 第一個機會類型的例外'LuaInterface.LuaScriptException' 發生在LuaInterface.dll中
  • 無法打開腳本:mainmenu/console

是否可以通過LuaVM創建線程之外的線程來運行lua函數?

+0

「無法預料的異常」,好的。 「未知的例外」,好的。 「隨機例外」。 。 。 。 。 。 – Tipx

回答

1

Lua不是線程安全的。您需要爲每個線程創建一個Lua狀態並調用線程特定狀態,或者將鎖定放在任何Lua調用周圍。

+0

感謝您的回覆!這是我懷疑的穿線。 –

0

這個問題確實是線程化,這要感謝BMitch指出了這一點。

我已經通過讓消息線程手用參數向主線程發送函數,然後在更新方法中調用它們來修復它。