ואח"כ לבנות consumer ושמכניס כל ראשוני שאני מוצא ל-ל-Queue שקורא את כל המספרים ומדפיס אותם לקונסול.
בקוד שלי בניתי את הנפה שמוצאת את המספרים הראשוניים (ב-main כשבונים את האובייטק מכניסים מספר מסויים למשל 1000 והנפה מוצאת את כל הראשוניים עד 1000) והכנסתי אותם ל-Queue.
מה שלא הולך לי זה ה-consumer ,ואני צריך גם לעשות את זה בעזרת עוד theard (אני צריך להשתמש בזה בתרגיל) שקורא את המספרים ומדפיס.
זה מה שיש לי עד עכשיו:
קוד: בחירת הכל
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace T
{
public class Eratosthenes
{
Queue<int> mPrimesQueue = new Queue<int>();
public int mCount = 0;
public int mMaxNumber;
public int mNumberToCheck;
public static int mPrime;
public static List<int> mNumbersList = new List<int>();
public Eratosthenes(int max)
{
mMaxNumber = max;
for (int i = 2; i < mMaxNumber + 1; i++)
{
mNumbersList.Add(i);
}
}
public bool findNum(int number)
{
if (number % mPrime == 0)
{
return true;
}
return false;
}
public void checkIfPrime()
{
List<int> PrimeList = new List<int>();
while (mCount < mMaxNumber-1)
{
if (mNumbersList.Count != 0)
{
mPrime = mNumbersList[0];
for (int i = 0; i < mNumbersList.Count; i++)
{
int NumToCheck = mNumbersList.Find(findNum);
mNumbersList.Remove(NumToCheck);
}
mPrimesQueue.Enqueue(mPrime);
Task QueueTask = new Task(Constumer);
QueueTask.Start();
mNumbersList.Remove(mPrime);
}
mCount++;
}
}
public void Constumer()
{
while (true)
{
if (mPrimesQueue.Count == 0)
{
}
else
{
Console.WriteLine(mPrimesQueue.First());
mPrimesQueue.Clear();
}
}
}
}
} 
