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 秒が経過しました!」と表示されることです。text で、すぐに終了します。
どのキーもクリックReadKey
せず、メソッドが実行されない場合、テキストが数秒間表示されるだけです。
何故ですか?バグですか?そして、私はそれを修正できますか?