В моей игре XNA у меня есть игровое окно и консоль, на которой запущена многопоточная консоль.ReadLine (), поэтому игра не зависает при ожидании ввода сценариев.Я пытаюсь получить его там, где, когда игровое окно закрывается, консоль закрывается автоматически, а также ввод для фактической работы (с возможностью распечатывать вещи, ожидая ввода).Теперь я получил автоматическое закрытие, используя код из этого вопроса: Как добавить Timeout в 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();
Спасибо!