2011-01-25 15 views
1

C++でビルドされたWindowsサービスでメソッドを定期的に呼び出す必要があります。私はSvcMain()のメソッドを呼び出しています。C++で一定の時間間隔でメソッドを実行するWindowsサービス

int main(int argc, char* argv[]) 
{ 
    // The Services to run have to be added in this table. 
    // It takes the Service Name and the name of the method to be called by SC Manager. 
    // Add any additional services for the process to this table. 
    SERVICE_TABLE_ENTRY ServiceTable[]= {{SVCNAME,(LPSERVICE_MAIN_FUNCTION)SvcMain},{NULL,NULL}}; 

    // This call returns when the service has stopped. 
    // The process should simply terminate when the call returns. 
    StartServiceCtrlDispatcher(ServiceTable); 
    return 0; 
} 

void WINAPI SvcMain(DWORD argc, LPTSTR *argv) 
{ 
    ConnectToServer(); 
} 

Q1。 ConnectToServer()は常時起動されますか?私はちょうど勝利サービスがどのように働くのか分かりません。
Q2. 15分ごとにConnectToServer()を起動します。どうやってやるの ?

EDIT:このサービスのインストーラを作成するにはどうすればよいですか?

+0

http://msdn.microsoft.com/en-us/library/ms687414%28v=vs.85%29.aspx – Hasturkun

答えて

1

これはSvcMainを一度呼び出す予定です。しかし、あなたはSvcMainですべきことはしていません。 MSDNの良い例は約Writing a ServiceMain functionです。

この例をコピーすると、SvcInit関数内のConnectToServer(while(1)ループ内)を呼び出すコードを記述します。 WaitForSingleObjectへのコールでタイムアウト値として15分を指定すると、コール間で15分の遅延を得ることができます。


ConnectToServer関数は、長時間実行されるプロセスである場合は、あなたのサービスが要求を停止するためにタイムリーに応答するよう、あなたはおそらく、それを分割し、その中WaitForSingleObjectへのより多くの電話を導入する方法を見つける必要があります。

+0

私はPerticular時間にConnectToServer()を起動できますか?私はそれを毎日午後6時に呼びたいと思う。 – sid

関連する問題