Разработка приложений для ПК. Доработка существующего продукта. Язык программирования: C#. Есть программа написанная на c#, объясняю суть: Есть listview (пока это датагрид для удобства, но не суть), туда пользователь загружает списком из файла аккаунты для работы с параметрами (прокси там и тд, через разделитель) и данные помещаются в нужные колонки. Нажимает ПКМ на строку и запустить в контекстом меню, стартует новый поток: Thread thread = new Thread(() => go(strings)); Запущенный поток выполняет http запросы через restsharp на разные ресурсы в цикле (бесконечно, окончания нету) и все было бы ничего но есть две проблемы: во-первых, завершить выполнение потоков можно только полностью закрыв программу, а хотелось бы иметь возможность точно так же, как и запустить тот или иной аккаунт, так и остановить его (напомню - через контекстное меню), а сделать это с помощью потоков невозможно. И во-вторых, число потоков ограничивается ядрами. В async/await я полный 0, нужно на коротком примере кода исправить обе проблемы с комментариями, чтобы я смог изменить все 2000 строк функции). Еще раз опишу задачу коротко: адаптировать короткую часть кода с объяснениями под многопоточность и так же сделать завершение работы того или иного аккаунта из контекстного меню.