Мне нужно использовать данные из python API. Я вызываю это из C# Windows Form / System.Diagnostics.Process. Я знаю, как это сделать.
Чтобы исключить повторяющиеся вызовы из API и использовать async / task из формы Windows, я хотел бы получить ваши предложения по асинхронному / многопоточному подходу к следующей структуре. Пожалуйста, извините за псевдокод для простоты.
WindowsFormEvent()
(Get a List of Items from database, I know this one)
(Process Items (ProcessItems) in List in an async/multi-threaded way to increase performance and keep UI responsive)
for each (item in List)
{
(do Something) (these are not dependent on each other and can preferably run
at the same time. These is called from a windows.form object
and we need to wait here to keep windows form responsive?)
}
Something
{
(run a python process, utilize StreamReader() that gives us List<string> results.
#iterate over results
(fire off x number of (threads/Tasks) to process each <List>item in results)
(lets say fire of 20 and then when, once one is done fire off another
until all are done)(total list might be 2000 items
}
Очевидно, это вопрос архитектуры. Я не жду точного кода. Если бы вы могли дать хорошее представление о структуре методов / задач / ожиданий для завершения этого logi c, я был бы в восторге и напишу окончательное решение. К сожалению, API не совсем реляционный.