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!==");
        }
Exemple #2
0
		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);
			}
		}
Exemple #3
0
        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);
            }
        }