以下是我在C#中做了一个代码: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();
}
}
}
现在的问题是,当控制台说:“五秒钟过去了!” (在中止t2
线程之后),它不会立即退出。这段文字停留在那里几秒钟,然后控制台退出。
问题是,如果我在线程中止之前按下键(方法ReadKey
),它会显示“5秒通过!”文本,然后马上退出。
如果我不点击任何键,并且ReadKey
方法不会发生,它只会显示文本几秒钟。
这是为什么?这是一个错误吗?我能解决它吗?
因为它清理线程?我想不出任何其他原因。 –
是的,但是如果我终止了具有“Console.ReadKey()”的线程,则ReadKey命令也应该中止,因为它是我中止的线程的一部分。 – BlueRay101
1.不要放弃线程,只是要求麻烦,2.为什么要创建一个'Program'的新实例?只需调用'actual'即可。 – James