我通过客户端进行调用以启动成功调用StopTickerTimer函数的StopTickerTimer函数,但不幸实际上并没有停止计时器。定时器启动并正常工作,但我似乎无法理解为什么我的计时器不停止。我试过设置timer.Enabled = false。我已经尝试过在这里找到的各种解决方案,但似乎没有任何工作。C#Timer.Stop()不工作
public Timer timer = new Timer();
private string jsonContents;
private string currentTickerPlaylist;
private int i = 0;
private List<string> playlistTickers;
public void StartTickerTimer(int seconds, string selectedPlaylist)
{
currentTickerPlaylist = selectedPlaylist;
InitPlaylistTickerTimer(seconds);
}
public void StopTickerTimer()
{
StopTimer();
}
private void InitPlaylistTickerTimer(int seconds)
{
timer.Elapsed += new ElapsedEventHandler(t_Tick);
timer.Interval = seconds * 1000;
timer.AutoReset = true;
timer.Start();
}
private void StopTimer()
{
timer.Stop();
}
private void t_Tick(object sender, EventArgs e)
{
SetPlaylistTickerSettings();
if (i >= playlistTickers.Count)
{
i = 0;
Payload ticker = new Payload
{
ticker = playlistTickers[i]
};
Payload ticker2 = new Payload
{
payload = ticker
};
var json = ServiceStack.Text.JsonSerializer.SerializeToString(ticker2);
PutToSingular("url", json);
i++;
}
else
{
Payload ticker = new Payload
{
ticker = playlistTickers[i]
};
Payload ticker2 = new Payload
{
payload = ticker
};
var json = ServiceStack.Text.JsonSerializer.SerializeToString(ticker2);
PutToSingular("url", json);
i++;
}
}
你可能从不同的线程比启动它的一个停止计时器? – PhonicUK
你是什么意思“通过客户端”? –
您的计时器必须是静态的(在所有用户之间共享)或以会话状态存储,以便通过单独的客户端请求进行访问。服务器端技术是什么? mvc,web api等 – ps2goat