Здравствуйте, LWhisper, Вы писали:
LW>Здравствуйте, Serginio1, Вы писали:
S>> А чем поток внутри занимается? Какова нагрузка на процессор?
S>> Если он, что то ожидает то твой то нужно заменить все синхронные операции на асинхронные.
S>> Thread.Sleep заменяется на await Task.Delay().
LW>В лучшем случае — по стабильному каналу общаются с SQL-сервером.
LW>В худшем — по крайне не стабильному с сервером на другом конце планеты, постоянно устанавливая соединение заново, когда жирафы прерывают луч лазерного интернета.
Для запросов используй асинхронные методы например
Async Query & Save (EF6 onwards)
Основное отличие задач от потоков заключается в сохранении состояния. Для каждого потока выделяется память под стек плюс данные под переменные потока и значения регистров. В задаче это данные объекта (Замыкание). У них свой планировщик.
Только потоки жрут значительно больше ресурсов. Правда при асинхронном программировании нужно использовать асинхронные методы
https://msdn.microsoft.com/ru-ru/library/5cykbwz4(v=vs.110).aspx
Начиная с версии .NET Framework 4, только полностью доверенный код может установить maxStackSize значение больше, чем размер стека по умолчанию (1 МБ). Если указано большее значение для maxStackSize при выполнении кода с частичным доверием maxStackSize игнорируется и используется размер стека по умолчанию. Исключение не возникает. Код на любом уровне доверия, может установить maxStackSize значение меньше, чем размер стека по умолчанию.
Если maxStackSize меньше, чем минимальный размер стека, используется минимальный размер стека. Если maxStackSize не кратному размеру страницы, он округляется до следующего большего кратной размеру страницы. Например при использовании .NET Framework версии 2.0 в Windows Vista, 256 КБ (262 144 байт) является минимальным размером стека, а размер страницы равен 64 КБ (65 536 байт).