Не могу справиться с аварией NLua

Я пытаюсь использовать сценарии lua в своем приложении C#, но у меня возникают проблемы при запуске различных сценариев, когда я запускаю 3~4 сценария, я получаю это исключение:

Как видите, я "ловлю" исключение AccessViolationException, на всякий случай:

[HandleProcessCorruptedStateExceptions]
            public void ExecuteAsync(MyLuaThread thread)
            {
                Task.Factory.StartNew(() =>
                {
                    if (Monitor.TryEnter(ObjLocker, new TimeSpan(0, 0, 5)))
                    {
                        try
                        {
                            Thread.Sleep(10);
                            if (ScriptRunning[thread.name])
                            {
                                var result = lua.DoString(thread.code);
                            }
                            Thread.Sleep(10);
                        }
                        catch (AccessViolationException e4)
                        {
                            thread.errors.Add(time() + " - Access Error - " + e4.Message);
                            print("(" + thread.name + ") Access Error - " + e4.Message);
                        }
                        catch (NLua.Exceptions.LuaScriptException e)
                        {
                            thread.errors.Add(time() + " - Script Error - Line: " + e.Message.Substring(e.Message.IndexOf(":")));
                            print("(" + thread.name + ")Line: " + e.Message.Substring(e.Message.IndexOf(":")));
                        }
                        catch (Exception otherEx)
                        {
                            thread.errors.Add(time() + " - Other Error - " + otherEx.Message);
                            print("(" + thread.name + ") Access Error - " + otherEx.Message);
                        }
                        finally
                        {
                            Thread.Sleep(10);
                            Monitor.Exit(ObjLocker);
                        }
                    }
                });
            }

Я создал этот небольшой проект, чтобы показать вам, ребята, что происходит ошибка. Просто добавьте 3~5 потоков и запустите их, это не должно занять более 5 секунд, чтобы произошел сбой.

Ссылка на небольшой проект: https://www.dropbox.com/s/4fyk8tblff7v5wa/SmallLuaTest.rar

0 ответов

Другие вопросы по тегам