以下是我在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