对于一个控制台应用程序,我需要知道如何在设置的时间(大约10秒)内等待用户输入一个键或一组键,然后再继续执行应用程序的“自动运行”部分。
这让我感到困扰,因为我无法弄清楚计时器是如何工作的,或者使用线程休眠,我应该使用什么?我一整天都在搜索。
一些伪代码:
1.应用程序打开
2.应用程序等待10秒钟让用户按“k”键。
3.如果用户按下k,则转到4。如果用户没有,则转到5。
4.运行一个函数(打开一个表单)
5.运行一个函数(做某事)
我打赌这很简单,只是我不明白发生了什么。
对于一个控制台应用程序,我需要知道如何在设置的时间(大约10秒)内等待用户输入一个键或一组键,然后再继续执行应用程序的“自动运行”部分。
这让我感到困扰,因为我无法弄清楚计时器是如何工作的,或者使用线程休眠,我应该使用什么?我一整天都在搜索。
一些伪代码:
1.应用程序打开
2.应用程序等待10秒钟让用户按“k”键。
3.如果用户按下k,则转到4。如果用户没有,则转到5。
4.运行一个函数(打开一个表单)
5.运行一个函数(做某事)
我打赌这很简单,只是我不明白发生了什么。
static void openForm()
{
Console.WriteLine("Form opened!");
}
static void doSomething()
{
Console.WriteLine("Do something!");
}
static void Main(string[] args)
{
bool optionForm = false;
int seconds = 1;
Console.Write("Press 'k' to open form");
while (true)
{
if (Console.KeyAvailable)
{
ConsoleKeyInfo c = Console.ReadKey(true);
if (c.Key == ConsoleKey.K)
{
optionForm = true;
break;
}
}
System.Threading.Thread.Sleep(1000);
if (seconds++ > 10)
break;
Console.Write('.');
}
Console.WriteLine();
if (optionForm)
openForm();
else
doSomething();
Console.ReadKey();
}
设置一个10秒的定时器。
当定时器到期时,触发一个事件。
在事件处理程序中继续执行“自动运行”部分。
如果用户在定时器到期之前按下任意键,则终止线程。
Timer
类页面上有一个等待一段时间的定时器示例。
谢谢Marlon!这真的帮了我很多。
我使用了以下代码:
int minutes = 1;
while (true)
{
if (Console.KeyAvailable)
{
ConsoleKeyInfo c = Console.ReadKey(true);
if (c.Key == ConsoleKey.Enter)
{
break;
}
}
Thread.Sleep(1000);
if (minutes++ > 10)
{
throw;
}
}
throw
在 catch
之外。 - mafu这里有一些代码,可以为您解决问题。
Form1 f = new Form1();
System.Threading.Timer t = new System.Threading.Timer(o => f.Invoke(new Action(() => f.textBox1.Enabled = true)), null, 10000, System.Threading.Timeout.Infinite);
f.ShowDialog();
t.Change(System.Threading.Timeout.Infinite, System.Threading.Timeout.Infinite);