ОРИГИНАЛЬНЫЙ ВОПРОС
Наше приложение использует CSocket, для работы которого требуется насос сообщений. В настоящее время нецелесообразно переходить на другую реализацию сокетов, хотя на этом мы бы хотели в какой-то момент оказаться.
Приложение находится в Visual C ++ (НЕ управляется).
В настоящее время мы запускаем C ++ DLL с помощью средства запуска службы C # .NET, которое запускает поток с помощью Application.Run, чтобы запустить насос сообщений, а затем использует DllImport для запуска метода запуска в нашей DLL.
С этим связано множество проблем, наиболее острой из которых является то, что если по какой-либо причине происходит сбой DLL, мы не получаем файл дампа!
В результате этого мы переключаемся на средство запуска службы C ++, и, хотя у нас все в порядке с аспектом службы, мы немного озадачены тем, как запустить насос сообщений.
Я осмотрел Google и несколько вопросов здесь, но часть моей проблемы - это отсутствие базовых знаний C ++, поэтому извиняюсь, если это дурацкий вопрос, если кто-то может указать мне правильное направление, которое было бы очень ценно.
Большое спасибо заранее
Мэтт Педдлсден
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ
Текущий сервис C #, который мы пытаемся заменить, по сути делает это:
public void PumpThread()
{
DLLStart();
Application.Run();
}
protected override void OnStart(string[] args)
{
try
{
Thread pumpThread = new Thread(new ThreadStart(PumpThread));
pumpThread.IsBackground = true;
pumpThread.Start();
}
catch (DllNotFoundException dnfe)
{
}
catch (Exception e)
{
}
}
protected override void OnStop()
{
try
{
DLLStop();
}
catch (DllNotFoundException dnfe)
{
}
catch (Exception e)
{
}
}
По сути, мы просто пытаемся заменить вышеуказанную C # .NET Windows Service на эквивалент C ++, чтобы наш код работал полностью в неуправляемом мире, а не излишне путал это с 5 строками управляемого кода.
DLLStart () и DLLStop () - две функции, импортированные из нашей неуправляемой DLL C +, которые фактически запускают и останавливают систему.
Я не совсем уверен, к какому виду проекта Visual C ++ это нужно, чтобы быть в состоянии что-либо сделать с насосом, если честно.
Надеюсь, что эти дополнительные данные полезны.