Я сделал именно это с приложением C ++ на основе MFC в Visual Studio 2008 и службой Windows на C .NET.
Во-первых, если вы еще не создали службы C # для Windows, у меня есть пара учебных пособий по созданию базовой инфраструктуры. первый учебник предоставляет пошаговую процедуру для создания службы и записи событий в журнал событий для конкретного приложения. Второй учебник показывает, как изменить службу для установки и удаления себя из командной строки, что я считаю очень полезным.
Во-вторых, вам нужно решить, как вы собираетесь взаимодействовать между вашим приложением MFC и службой Windows. Подойдет любая модель межпроцессного взаимодействия (IPC) - сокеты, каналы, общая память, WCF и т. Д. Поскольку вы все равно хотите перейти на .NET, я бы порекомендовал использовать Windows Communication Foundation (WCF), который является как я это сделал. В частности, я выбрал аспект именованного канала WCF для моего метода связи на основе диаграммы, показанной здесь .
Если вы пойдете по пути WCF, вы выиграете от того факта, что связь между приложением и службой основана на .NET. Таким образом, когда вы перемещаете свое приложение в .NET, механизм связи не нужно будет переписывать. В то же время хитрость заключается в том, чтобы приложение MFC использовало код WCF. Для этого напишите клиентский код WCF в сборке .NET, используя C #. Затем используйте dll C ++ для преодоления разрыва между кодом MFC и сборкой .NET. У меня еще один учебник с пошаговыми инструкциями, как это сделать.
Надеюсь, это поможет.