я получил что-то вроде этого:Как я могу завершить функцию через X секунд?
void func()
{
int a = int.Parse(system.readline.console());
}
Но я хочу эту функцию, чтобы закончить через 5 секунд, например, даже если пользователь ничего не вставить. Как я могу это сделать?
Я думал о чем-то вроде этого:
void func()
{
System.Timers.Timer timer = new Timer();
timer.Interval = 5000
timer.Elapsed += SomeFunc;
timer.Start()
int a = int.Parse(system.console.readline());
}
void SomeFunc(object sender, EventArgs args)
{
Thread.CurrentThread.Abort();
}
Но это выглядит слишком некрасиво. Кроме того, я действительно не хочу отменять все потоки, просто нарушаю эту функцию. Я не хочу создавать другой поток только для этой функции.
Ответ зависит от реализации исходной функции. Действительно ли 'func' является фактическим кодом? или у вас другой? –
Если это действительно просто чтение с консоли, взгляните на http://stackoverflow.com/questions/57615/how-to-add-a-timeout-to-console-readline –
charles, точно! Спасибо большое! – arielttt0