asp.net Web サイトに自動更新機能を実装しています。
ユーザーは Web サイトでログインを行い、更新が必要なテーブルがある特定のページに移動すると、テーブルを更新するタイマーが作成されます。
ただし、ユーザーがログアウトするか、セッションが期限切れになると、タイマーは実行され続けます。これを X ユーザーに掛けると、サーバー上で X タイマーが実行されます。
不要になったタイマーを削除する最善の方法は何ですか?
これまでのところ、私のコードは次のとおりです。
protected static System.Timers.Timer _timer;
protected void Page_Load(object sender, EventArgs e)
{
...
ServiceStatus serv = new ServiceStatus();
OutSubscricoesInfoV2 subscr = new OutSubscricoesInfoV2();
serv = StreamerUtils.GetSubscricoesStreamer(ref subscr);
if (serv != null && serv.success)
{
StreamerUtils.StreamerState strState = StreamerUtils.GetStreamerState(subscr);
if (strState != null && strState.IsActive)
{
startAutoRefresh();
}
}
}
private void startAutoRefresh()
{
if (Session["RefreshTimer"] == null)
{
_timer = new System.Timers.Timer(10000);
_timer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
_timer.Enabled = true;
Session["RefreshTimer"] = _timer;
}
}
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
//TODO: call refresh function
}
私のページには、ユーザーがクリックしてテーブルを更新できる次のボタンがあります。
<asp:ImageButton runat="server" ID="RefreshCot" OnClientClick="javascript:StocksListControl.TriggerPostBack(); return false;" CausesValidation="false" ImageUrl="/_layouts/images/refresh-title.png" />