Как мне вызвать несколько потоков с методом, чтобы статическое поле не менялось? - C#
Формулировка задачи:
Не знак как назвать, собственно к сути.
Сильно упростил код для того чтобы было проще. Есть класс в нем есть публичные переменные как мне вызвать несколько потоков с функцией StartThread чтобы numb не изменялся.
В итоге я должен каждую секунду записывать в Globals.rich "Я поток 1" и "Я поток 2".
class Class
{
private static int numb;
internal Class(int number)
{
numb = number;
}
public void StartThread()
{
while (true)
{
Globals.rich += "Я поток " + numb + Environment.NewLine;
Thread.Sleep(1000);
}
}
}Решение задачи: «Как мне вызвать несколько потоков с методом, чтобы статическое поле не менялось?»
textual
Листинг программы
using System;
using System.Threading;
namespace ConsoleApplication11
{
class Program
{
static void Main()
{
for (int i = 0; i < 100; i++)
{
ThreadPool.QueueUserWorkItem(state =>
{
var x = new Class(Thread.CurrentThread.ManagedThreadId);
x.SomeEvent += (sender, s) => Console.Write(s);
x.StartThread();
});
}
Thread.Sleep(100000);
}
}
class Class
{
[ThreadStatic]
private static int numb;
public event EventHandler<string> SomeEvent = delegate { };
internal Class(int number)
{
numb = number;
}
public void StartThread()
{
while (true)
{
SomeEvent(this, "Я поток " + numb + Environment.NewLine);
Thread.Sleep(1000);
}
}
}
}