-3

c# のウィンドウ サービスを使用して、構成タグに基づいてサービスを実行したいのですが、実際には、以下で説明するように、app.config に値の 3 つのタグを設定します。

<add key ="FIREHOST_TIME" value ="5" ></add>
<add key ="SETDAYS" value ="3" ></add>
<add key ="RUN_NOW" value ="1" ></add> <!-- 0=no, 1=yes-->

RUN_NOW の値が 1 の場合、

サービスが開始されると、すぐに作業を行う必要があり、次のインスタンスでは SETDAYS タグに基づいて実行する必要があります。

RUN_NOW の値が 0 の場合、

サービスが開始されると、SETDAYSが来るのを待つ必要がある作業を行うべきではなく、設定された日のタグごとに次のインスタンスを実行する必要があります。

以下に、コードで貼り付けました。

   protected override void OnStart(string[] args)
    {
     DateTime tenAM = DateTime.Today.AddHours(FIREHOST_TIME);



            if (DateTime.Now > tenAM)
                tenAM = tenAM.AddDays(SETDAYS);


            // calculate milliseconds until the next 10:00 AM.  
            int timeToFirstExecution = (int)tenAM.Subtract(DateTime.Now).TotalMilliseconds;

            // calculate the number of milliseconds in 24 hours.   
            int timeBetweenCalls = (int)new TimeSpan(24, 0, 0).TotalMilliseconds;

            TimerCallback methodToExecute = kickstart;

            // start the timer.  The timer will execute "ProcessFile" when the number of seconds between now and   
            // the next 10:00 AM elapse.  After that, it will execute every 24 hours.   
            System.Threading.Timer timer = new System.Threading.Timer(methodToExecute, null, timeToFirstExecution, timeBetweenCalls);


         }

タグ ヘルプ RUN_NOW を使用してロジックを実装する必要があります。実行方法を教えてください。

4

1 に答える 1

1

このようにしてみてください。AppSettingsのドキュメントを確認してください

var yourAppKey = ConfigurationManager.AppSettings.Get("RUN_NOW"); 
                      or 
var yourAppKey = ConfigurationManager.AppSettings["RUN_NOW"]; 
 // do something with yourAppKey
于 2012-07-16T11:43:11.010 に答える