Возможно, я сказал, что это займет много времени.COM API MapPoint является однопоточным.Чтобы заставить его вычислять несколько маршрутов параллельно, нужно запустить несколько MapPoint, каждый в своем собственном потоке.
Итак, для вашего четырехъядерного ядра вы запустите 2-3 потока.Каждый поток запускает свою собственную MapPoint, а затем использует ее для маршрутизации.У вас не будет одного MapPoint на ядро.Помимо издержек ОС и ваших операций ввода-вывода, если вы посмотрите, как один MapPoint вычисляет маршрут, вы обнаружите, что более поздние версии частично внутренне многопоточные и могут занять около 1,5 ядер, если они доступны.
Есть также много ошибок, которые нужно остерегаться.Собственная сборка мусора в MapPoint не оптимизирована для расчета группового маршрута.Самый простой обходной путь для этого - просто перезапускать каждое приложение MapPoint с периодическими интервалами (по крайней мере, один раз в день, но, возможно, чаще).
Кроме того, некоторые операции (открытие файла кажется основной) не могут быть вызванынесколькими картами одновременно.Вероятно, потому что они пытаются открыть тот же файл, но я не исследовал дальше.Чтобы избежать этого, вам нужно будет внедрить собственный механизм блокировки.
Советы Саураба для .NET 4 звучат хорошо: мне еще предстоит использовать многопоточность .NET 4 в гневе - мой опыт многопоточности MapPoint / .NETс .NET 2.
Я не знаю, какое у вас приложение, но знаете ли вы, что я продаю продукт, который использует многопроцессорный MapPoint для расчета расстояния / времени в пакетном маршруте ...: -)