gpt4 book ai didi

c# - 终止控制台 ReadLine

转载 作者:行者123 更新时间:2023-11-30 18:02:07 24 4
gpt4 key购买 nike

在我的 XNA 游戏中,我有游戏窗口和运行线程 Console.ReadLine() 的控制台,因此游戏在等待脚本输入时不会挂起。我试图让它在游戏窗口关闭时,控制台自动关闭,以及实际工作的输入(能够在等待输入时打印出来)。我现在通过使用这个问题的代码让它自动关闭:How to add a Timeout to Console.ReadLine()?

但是,当我在输入中按回车键时,会抛出 ObjectDisposedException。另外,当我希望事情是即时的时,我坚持使用超时。我将如何解决这个问题?

public class ConsoleInput
{
public bool running = true;

public void Run()
{
String input;
while (running)
{
input = ReadLine(500);
//stuff
}
}

string ReadLine(int timeoutms)
{
ReadLineDelegate d = Console.ReadLine;
IAsyncResult result = d.BeginInvoke(null, null);
result.AsyncWaitHandle.WaitOne(timeoutms);//timeout e.g. 15000 for 15 secs
if (result.IsCompleted)
{
string resultstr = d.EndInvoke(result);
Console.WriteLine("Read: " + resultstr);
return resultstr;
}
result.AsyncWaitHandle.Dispose();
return "";
}

delegate string ReadLineDelegate();
}

调用者:

LuaInput = new ConsoleInput();
LuaInputThread = new Thread(new ThreadStart(LuaInput.Run));
LuaInputThread.Start();

谢谢!

最佳答案

你试过设置线程的

IsBackground = true; ?这将强制它关闭并且不允许线程阻塞。

关于c# - 终止控制台 ReadLine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8332588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com