Я написал программу на C #. Теперь я закончил весь функционал и все работает. Но работает только с одним потоком. Я много вычисляю и иногда загружаю около 300 МБ или больше файлов измерений в приложение.
Теперь я хочу сделать программу многопоточной, потому что пользовательский опыт действительно плох во времена интенсивной обработки или операций ввода-вывода.
Каков наилучший способ рефакторинга программы, чтобы ее можно было сделать многопоточной без особых усилий? Я знаю, что это вещи, которые я должен был иметь раньше. Но у меня нет.
Я использовал шаблон синглтона для примерно трех больших и важных модулей, которые задействованы практически во всех остальных функциях программы.
Я использовал более-менее чистую архитектуру MVC (Model View Control). Поэтому мне интересно, возможно ли позволить пользовательскому интерфейсу работать в одном потоке, а остальные приложения - в другом.
Если нет, загрузка и анализ 300 МБ, создание объектов займет около 3 минут, чтобы закончить. В это время пользователь не получает ответа от GUI. : /
UPDATE:
Мои синглтоны используются как хранилище. Один синглтон сохраняет объекты проанализированных файлов измерений, а другой синглтон сохраняет результат. У меня разные расчеты, в которых используются одни и те же файлы измерений и создаются результаты, которые они хотят сохранить, используя другой синглтон. Это одна проблема.
Второе - заставить парня реагировать на действия пользователя или, по крайней мере, избегать этого предупреждения о том, что окно не отвечает.
Спасибо всем за все советы. Я попробую их. Извините за поздний ответ.