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).
I have used two techniques to address this issue. The first is to call the DoFile or DoString method inside a separate Task. That way you can abort the thread. I do not know of any technique (say from within a hook) to exit the interpreter. 

Another way would be to setup a separate [Appdomain](http://msdn.microsoft.com/en-us/library/system.appdomain.aspx). Using this you can also set separate constraints (evidence and permission set) see [CreateDomain](http://msdn.microsoft.com/en-us/library/ms130766%28v=vs.110%29.aspx) for details.