Не выполняется служба

200
07 августа 2018, 08:50
 ofstream(myfile);
SERVICE_TABLE_ENTRY DispatchTable[] = { { ptr, ServiceMain },{ NULL, NULL } };
if (!StartServiceCtrlDispatcher(DispatchTable)) 
{       
    /*myfile.open("D:/New folder/Readerr4.txt", ios_base::app);
    myfile << endl;
    myfile << "1" + GetLastError();
    myfile.close();*/

}
else 
{  ///***Работает***            
    myfile.open("D:/New folder/Readerr4.txt", ios_base::app);
    myfile << endl;
    myfile << "2" + GetLastError();
    myfile.close();
    //***Не работает***
    HRESULT hr = S_OK;
    _bstr_t valField1;
    _bstr_t valField2;
    CoInitialize(NULL);
    _bstr_t strCnn("Provider=SQLOLEDB;Persist Security Info=False; Initial Catalog= OPUBase ;Data Source=NIK\\SQLEXPRESS;Integrated Security=SSPI;");
    _RecordsetPtr pRstAuthors = NULL;

    // Call Create instance to instantiate the Record set
    hr = pRstAuthors.CreateInstance(__uuidof(Recordset));
    pRstAuthors->Open("SELECT TOP (100) [DocID] ,[DocCode]  FROM [OPUBase].[dbo].[DocList] WHERE DocCode = 1", strCnn, adOpenDynamic, adLockBatchOptimistic, adCmdText);
    pRstAuthors->MoveFirst();
    while (!pRstAuthors->EndOfFile)
    {
        myfile.open("D:/New folder/Readerr4.txt", ios::app);
        valField1 = pRstAuthors->Fields->GetItem("DocID")->Value;
        valField2 = pRstAuthors->Fields->GetItem("DocCode")->Value;
        cout << valField2 + "  " + valField1;
        cout << endl;
        myfile << endl;
        myfile << valField1 + " " + valField2; 
        myfile.close();
        pRstAuthors->MoveNext();
    }   
}   

Когда запускаешь просто exe, все работает. Когда запускаешь службу, пишет только первую часть, цикл while (!pRstAuthors->EndOfFile) не выполняется. Может кто знает, как можно отследить в чем ошибка во время работы Сервиса?

Answer 1

Чтобы отследить ошибки в своей службе необходимо:

  1. Запускать службу как отдельный процесс (Есть соответствующий флаг регистрации);
  2. Вручную поставить задержку;
  3. Отладчиком присоединится к процессу службы;

Вуаля!

Есть ещё куча способов, от собсвенного логгирования до просмотра логов ошибок служб.

READ ALSO
mariadb jdbc не работает - No suitable driver found for jdbc:mariadb://localhost:3306/statsDB

mariadb jdbc не работает - No suitable driver found for jdbc:mariadb://localhost:3306/statsDB

Пытаюсь подключиться к mariadb через jbdc отсюда: https://mariadbcom/kb/en/library/about-mariadb-connector-j/

349
Как сделать первую букву в строке жирной? - Android

Как сделать первую букву в строке жирной? - Android

Пытался через HtmlfromHtml, но не получается

181
Как сравнить String и Set&lt;String&gt;

Как сравнить String и Set<String>

Через Scanner ввожу любой текст, получается строка:

247
CodecNotFoundException при запросе в cassandra

CodecNotFoundException при запросе в cassandra

Что, где и как я должен что то зарегестрировать как кодек для пользовательского типа

224