Question: I use lua interfaces to get lua support in my C# program, the worker thread will freeze if the user submits code like this

```
while true do end

```

I have a way to detect if a infinite loop is running, but I need a nice way of exiting the DoString method from the Worker thread. Any ideas?

edit: @kikito, Yes Im deteting it something like that. The problem I have is that I cant find a clean way of killing the DoString method, it looks like the Lua interfaces main class (Lua) has some static dependencies, because if I do `lua.Close();` on my instance it will abort the DoString method, but the next time I instance an lua class `new Lua();` it will crash saying something about protective memory

edit: A feature branch showing my .Close code
<https://github.com/AndersMalmgren/FreePIE/tree/detect-and-recover-infite-lua-loop>

Answer: 
Put the Lua loop inside a coroutine and at the end of every loop, just use `Yield return null` to wait for a frame (Allowing the worker thread to be executed).
You can do it like this, if you want to detect if a loop is still running.

```lua
local detect = false

detect == true

goal = 5
star = 0

function loop()
   while detect == true do
       print("Still running")
   else
       print("Loop stopped running")
   end
end

Spawn(loop)

while true do
   if star > goal then
      detect = false
   end
end

```

The output will be:

```
Still running
Still running
Still running
Still running
Still running
Loop stopped running

```