Мне нужно протестировать клиентское серверное приложение. У меня есть сервер, работающий на каком-то порту, и вам нужно создать около 2000 клиентов, подключающих сервер. Для этого я пытаюсь создать 2000 потоков в C# приложении, используя следующий кодНедостаточно памяти при создании потоков
class Program
{
/// <summary>
/// Sample client code that makes gRPC calls to the server.
/// </summary>
public static void Main(string[] args)
{
for (int i = 0; i <= 2000; i++)
{
CalThread cThread = new CalThread(i);
} // Exception Raised Here
}
}
class CalThread
{
public CalThread(int clientID)
{
Thread thread = new Thread(() => getDataFromServer(clientID));
thread.Start();
}
public void getDataFromServer(int clientID)
{
try
{
//Channel channel = new Channel("192.168.0.123:50051", ChannelCredentials.Insecure);
while (true)
{
//Some code to connect to server and fetch data
Thread.Sleep(15000);
}
}
catch (Exception ex)
{
Thread.Sleep(15000);
Console.WriteLine(ex.Message);
}
}
}
Здесь исключение встречается System.OutOfmemory
в for loop of Main method
Однако я проверил приложения потребляет только 110 MB
памяти, когда это исключение поднятого?
Почему C# не позволяет мне создавать потоки в числах ..? Я также пробовал Thread Pool
, но не работал ...
Я могу сделать это с использованием 'ThreadPool' –