Я пытаюсь понять, почему эта программа не работает
Ожидаемый результат: числа 0-19 в случайном порядке
Что я получаю, когда бегу: некоторые цифры повторяются, иногда печатается 20.
Пожалуйста, помогите. Я пытался с блокировкой (obj) в DoSomething (), но это не помогло.
Программа
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace ConsoleApplication2
{
public delegate void callbackDelegate(int x);
class Program
{
void processCallback(int x)
{
Console.WriteLine("IN callback: The value I got is " + x);
}
static void Main(string[] args)
{
Program p = new Program();
p.processinThreads();
Console.ReadKey();
}
public void DoSomething(int x, callbackDelegate callback)
{
Thread.Sleep(1000);
//Console.WriteLine("I just woke up now " + x);
callback(x);
}
public void processinThreads()
{
for (int i = 0; i < 20; i++)
{
Thread t =
new Thread(new ThreadStart(()=>DoSomething(i, processCallback)));
t.Start();
}
}
}
}