Я новичок в этой теме, поэтому извините, если туплю. Пытаюсь разобраться.
Например, есть код:
namespace Practice
{
internal class Program
{
static string output = "CHINA";
static object locker = new object();
static void Main(string[] args)
{
Thread th1 = new Thread(Print);
Thread th2 = new Thread(Print);
th1.Start();
th1.Join();
th1.Start();
}
static void Print()
{
lock (locker)
{
Console.WriteLine(output);
output = output == "CHINA" ? "INDIA" : "CHINA";
}
}
}
}
Вывод:
CHINA
Unhandled exception. System.Threading.ThreadStateException: Thread is running or terminated; it cannot restart.
at System.Threading.Thread.StartCore()
at Practice.Program.Main(String[] args) in C:\Users\bredu\Documents\Учёба\Саморазвитие\1. Навыки для работы\Programming Practice\Проекты\Маленькие\Threads. Pr. 19-21\Practice\Program.cs:line 16
Вот там, где я вызываю метод Join(), я хочу, типа, как-то то ли завершить поток, то ли показать компилятору, что поток завершился. Ну, я в итоге хочу, чтоб оно вывело:
"CHINA"
"INDIA"
используя один и тот же поток.
Прочитал я где-то, что, вроде, через Task с методом ContinueWIth() можно решить эту задачу, но мне интересно, как будет выглядеть решение этой задачи через функционал чисто для Threads.