Как вручную запустить насос сообщений в C ++

ОРИГИНАЛЬНЫЙ ВОПРОС

Наше приложение использует 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 эквивалентом на C ++, чтобы наш код работает полностью в неуправляемом мире, вместо того, чтобы излишне путать это с 5 строками управляемого кода.

DLLStart () и DLLStop () - две функции, которые импортируются из нашей C + Unmanaged DLL, которые фактически запускают и останавливают систему.

] Я не совсем уверен, что вид проекта Visual C ++ это должно быть, чтобы иметь возможность делать что-нибудь с помпой, если честно.

Надеюсь, эти дополнительные данные будут полезны.

6
задан Matt Peddlesden 14 June 2011 в 09:05
поделиться