这是我用 C# 编写的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace xyz
{
class Program
{
Thread t1, t2;
static void Main(string[] args)
{
Program go = new Program();
go.actual();
}
public void actual()
{
t1 = new Thread(timer);
t2 = new Thread(inputting);
t1.Start();
t2.Start();
}
public void timer()
{
Thread.Sleep(5000);
t2.Abort();
Console.WriteLine("5 seconds passed!");
}
public void inputting()
{
Console.WriteLine("Please wait 5 seconds...");
Console.ReadKey();
}
}
}
现在,问题是,当控制台说“5 秒过去了!”时 (中止t2
线程后),它不会立即退出。此文本会在那里停留几秒钟,然后控制台退出。
问题是,如果我在线程中止之前按下(ReadKey
方法的)一个键,它会显示“5 秒过去了!” 文本,然后它立即退出。
如果我不单击任何键,并且该ReadKey
方法没有发生,它只会显示文本几秒钟。
这是为什么?它是一个错误吗?我可以修复它吗?