private void TestThreading() { Init(); var doWork = new DoWorkClass(); _Lua.RegisterFunction("dowork", doWork, typeof(DoWorkClass).GetMethod("DoWork")); bool failureDetected = false; int completed = 0; int iterations = 500; for(int i = 0; i < iterations; i++) { ThreadPool.QueueUserWorkItem(new WaitCallback(delegate(object o) { try { _Lua.DoString("dowork()"); } catch { failureDetected = true; } completed++; })); } while(completed < iterations && !failureDetected) Thread.Sleep(50); if(failureDetected) Console.WriteLine("==Problem with threading!=="); }
public void TestThreading () { using (Lua lua = new Lua ()) { object lua_locker = new object (); DoWorkClass doWork = new DoWorkClass (); lua.RegisterFunction ("dowork", doWork, typeof(DoWorkClass).GetMethod ("DoWork")); bool failureDetected = false; int completed = 0; int iterations = 10; for (int i = 0; i < iterations; i++) { ThreadPool.QueueUserWorkItem (new WaitCallback (delegate (object o) { try { lock (lua_locker) { lua.DoString ("dowork()"); } } catch (Exception e) { Console.Write (e); failureDetected = true; } completed++; })); } while (completed < iterations && !failureDetected) Thread.Sleep (50); Assert.AreEqual (false, failureDetected); } }
public void TestThreading() { using (Lua lua = new Lua()) { DoWorkClass doWork = new DoWorkClass(); lua.RegisterFunction("dowork", doWork, typeof(DoWorkClass).GetMethod("DoWork")); bool failureDetected = false; int completed = 0; int iterations = 500; for (int i = 0; i < iterations; i++) { ThreadPool.QueueUserWorkItem(new WaitCallback(delegate(object o) { try { lua.DoString("dowork()"); } catch { failureDetected = true; } completed++; })); } while (completed < iterations && !failureDetected) Thread.Sleep(50); Assert.False(failureDetected); } }