我正在尝试理解 .Net 中的线程概念。我无法使用 Yield() 方法。当我被 10 整除时,我希望控件转到并行线程。
请帮忙。
下面是我的示例代码:
class ThreadTest
{
//Index i is declared as static so that both the threads have only one copy
static int i;
static void Main(string[] args)
{
Thread t = new Thread(WriteY);
i = 0;
//Start thread Y
t.Start();
//Do something on the main thread.
for (; i < 100; i++)
{
if (i % 10 == 0)
{
//Simulate Yield() function
Thread.Sleep(0);
Console.WriteLine("The X thread");
}
Console.Write(i + ":X ");
}
Console.ReadKey(true);
}
static void WriteY()
{
for (; i < 100; i++)
{
if (i % 10 == 0)
{
//Simulate Yield() function
Thread.Sleep(0);
Console.WriteLine("The Y thread");
}
Console.Write(i + ":Y ");
}
}
}
我得到编译时错误:
System.Threading.Thread 不包含“产量”的定义
都铎王朝的回答。此方法仅适用于 .Net 4.0 及更高版本。
理想情况下,我希望一个线程启动并希望每个线程执行 10 个 i 递增。使用我目前的方法,我要么得到所有的“X”,要么得到所有的“Y”。
编辑: 通过 Tudor 和 TheHe 的输入 - 我已经能够获得备用 X 和 Y。问题的症结在于锁定对象的使用。但是这段代码的输出是不可预测的。