2017-01-30 8 views
0

C++とWindowsサービスアプリケーションの新機能です。

I WindowsサービスでATLを使用できません。

私はそれらを理解するWindowsサービスのための基本コードを書いて欲しいです。 、私は停止することi = 100で、ユーザはSCMstop the serviceをクリックすると、好きなibreakとサービスでこのforloopC++作業やプロセス中にサービスを停止する方法

for (int i = 0; i < 600; i++) // for this source 600 equal 1 hours 

を今すぐ:

は今、私は1つのループに存在するWindowsサービスのためのサンプルコードを書きます。

誰でも私を助けることができますか?

+0

:あなたが使用する必要がありますServiceCtrlHandler機能に忘れてはいけません*長い*実行中のループ(長い時間がかかる何かをしない限り、600回反復するループは非常に短くなります)ループ内のSCMをポーリングして停止要求をチェックできます。 –

+0

私のソースの600ループは1時間です。 – Joo

+0

これは「不必要な」部分です。ループの中でSCMを何度もポーリングしますか?また、コードがイベントを待っている場合は、SCMからイベントをリスンするイベントのリストに追加します。 –

答えて

0

だけでなく、私が試してみて、最適なソリューションを取得:

  1. を使用すると、スレッド
  2. を使用する必要がありますし、あなたが最終的にあなたのプログラム
  3. にイベントを追加する必要があり、あなたがチェックのためのフォローコードを使用することができますイベントは起こったかどうか?

    WaitForSingleObject(g_ServiceStopEvent、0)= WAIT_OBJECT_0

注:!あなたが持っている場合は

in case SERVICE_CONTROL_STOP use : SetEvent(g_ServiceStopEvent); 

神の運

関連する問題