【发布时间】:2014-09-16 12:38:32
【问题描述】:
我有一个 lua 脚本,它调用名为“delay”的方法,该方法调用以下内容:
public void Delay(int millisecondsTimeout)
{
Thread.Sleep(millisecondsTimeout);
}
但是,当 lua 脚本调用它时,它似乎忽略了这行代码,只运行其余代码而不阻塞线程(脚本在不同的线程上运行)。
但是,当我在 Thread.Sleep 行上放置断点时,它会按预期工作。
为什么会这样?太奇怪了!
编辑:这就是我创建脚本线程的方式:
new Thread(() =>
{
this.Script.DoFile(this.Path);
}).Start();
我使用lua.RegisterFunction注册方法,调用就好了。
【问题讨论】:
-
你刚才说脚本在不同的线程上运行。那你为什么认为
Thread.Sleep()会对它产生影响呢? -
@JeroenVannevel 它阻塞了当前线程,也就是调用它的线程(脚本线程),那它为什么不“停止”脚本执行呢?
-
@JeroenVannevel - 与问题不同。如果脚本只是简单地调用它,那么这是一个有效的问题。
-
你能给我们代码吗?
-
我认为提供帮助的一个好方法是创建一个新的新项目并复制产生奇怪问题的一段代码......尽量让它变得简单。我的意思是,让它变成 10 或 20 行。如果问题仍然存在,请为我们复制它们。 (但通常是简化过程,说明问题的原因)
标签: c# multithreading lua