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).
What about setting line hook *before* running lua code? I don't know is it possible in C#, but it is possible in original C lua.

Is yor loop detector already run in different C# task?

* If yes, use C# variable with C# hook. In this case your loop detector set and hool check C# variable like `terminateLua` and throw lua error (it should be possible).
* If no, and you detect loop on lua side (also using hooks?), set lua variable (make it upvalue to prevent user tricks) and also throw error.

Important part is to don't reset this (either C# or lua) variable before you are really sure about finishing your task, because user can catch your error via `pcall` and try to handle it.