私はWCFを初めて使用するので、これは別の方法で行うのが最適な方法かもしれません。
現在、WCFサービスのコレクションがありますが、毎週電子メールを送信する機能を組み込みたいと思っています。これを行うために、次のコードを使用して別のWCFサービスを構築しました。
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, AutomaticSessionShutdown = false)]
public class TimerService : ITimerService
{
private static Timer timer;
private static TimeSpan tSpan = new TimeSpan(0, 0, 20, 0);
private static OtherService Ref = new OtherService();
public void ToggleEmailTimer(bool enabled)
{
if (enabled)
timer = new Timer(new TimerCallback(TimerElapsed), null, tSpan, tSpan);
else
{
if(timer != null)
timer.Dispose();
}
}
private void TimerElapsed(object state)
{
Ref.SendWeekly();
}
}
無効になり始め、aspxページから有効にします。テストのために、これを10分間隔で動作させることができましたが、間隔を15分に設定するとどこかで壊れているようです。
私には、WCF Serivceセッションが非アクティブから期限切れになっているように見えます。これは、タイマーがちょうど停止する理由を説明します。aspxページからタイマーを有効にして終了し、タイマーサービスが持続するように、WCFサービスの有効期間を指定する方法はありますか?タイムアウト値の設定に関する情報を見てきましたが、これが当てはまるかどうかはまだわかりません。