在C#中,在Console中的方法中创建线程失败
本文关键字:创建 线程 方法 失败 Console | 更新日期: 2023-09-27 18:22:08
我是Threads的新手
并且想用C#编写一个简单的线程程序
目标是当我按下任何键时,它都必须创建新的线程,
并且每个线程都必须写入每次递增其值的计数,
创建新线程时。但结果并非如预期:)
它首先等待按键,按键后只写111111111111…。它不写2、3、4等。那么问题出在哪里呢?我该如何解决
预期结果如下:
111112222333311112222333344441111…
代码如下。
class Program
{
static Thread t;
static int count = 1;
static void Main(string[] args)
{
Console.Title = "Thread Test";
t = new Thread(wait);
t.Start();
Console.WriteLine("Main Thread End...");
}
static void write(object o)
{
while(true)
{
Console.Write(o.ToString());
Thread.Sleep(500);
}
}
static void wait()
{
Console.ReadKey();
Thread tt = new Thread(write);
tt.Start(count);
count++;
}
}
也许您想要递归wait()方法?
static void wait()
{
Console.ReadKey();
Thread tt = new Thread(write);
tt.Start(count);
count++;
wait(); //Added
}
试试这个例子:-)
您可以尝试创建更多具有不同优先级的不同任务。在write()方法中,你可以打印当前任务的名称,如果你想在类中存储更多不同的值,你可以通过继承添加属性
class Program
{
static List<Thread> lst = new List<Thread>();
//static Thread t;
static int count = 1;
static void Main(string[] args)
{
System.Console.Title = "Thread Test";
createThread();
foreach (Thread t in lst) t.Start();
//System.Console.WriteLine("Main Thread End...");
}
static void write()
{
while (true)
{
System.Console.Write(Thread.CurrentThread.Name);
Thread.Sleep(500);
}
}
static void createThread()
{
Random rnd = new Random();
while (count<=5)
{
Thread tt = new Thread(write);
if (rnd.Next(0,10)>=5)
{
tt.Priority = ThreadPriority.Highest;
}
else
{
tt.Priority = ThreadPriority.Lowest;
}
tt.Name = count.ToString();
lst.Add(tt);
count++;
}
}
}