c# -如何“强制退出”一个方法
本文关键字:方法 一个 强制退出 如何 退出 | 更新日期: 2023-09-27 18:01:51
[控制台应用程序]
我想在计时器上有一个方法,(Thread.Sleep),并在它旁边运行另一个方法,等待用户的响应。如果在用户响应(ReadKey)之前计时器已经超时,那么他们将失去一条生命。
我怎么能,简而言之,有一个ReadKey定时器?
Console.ReadKey()
是阻塞,所以你不能使用它。
可以使用Console.KeyAvailable()
和Thread.Sleep()
进行循环。不需要计时器。
var lastKeyTime = DateTime.Now;
...
while (true)
{
if (Console.KeyAvailable())
{
lastKeyTime = DateTime.Now;
// Read and process key
}
else
{
if (DateTime.Now - lastKeyTime > timeoutSpan)
{
lastKeyTime = DateTime.Now;
// lose a live
}
}
Thread.Sleep(50); // from 1..500 will work
}
您可以创建一个共享的ManualResetEvent,启动一个新线程(或使用线程池),并在第二个线程上使用. waitone()方法并设置超时。在ReadKey()返回后,向事件发出信号,另一个线程将知道它是由于键被按下还是因为超时而被唤醒,并可以做出相应的反应。