2016-11-23 51 views
-1

我通过客户端进行调用以启动成功调用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++; 
     } 

    } 
+0

你可能从不同的线程比启动它的一个停止计时器? – PhonicUK

+2

你是什么意思“通过客户端”? –

+0

您的计时器必须是静态的(在所有用户之间共享)或以会话状态存储,以便通过单独的客户端请求进行访问。服务器端技术是什么? mvc,web api等 – ps2goat

回答

-1

你开始你的计时器,但你是不是叫你“StopTimer”在代码的任何地方......

+2

StopTickerTimer确实如此 –

+0

谁告诉你的?因为你读了解决方案的一个文件,你认为你完全读了所有内容? OP只发布了最少的部分 –

+0

准确。 OP没有发布他的整个代码,所以我根据发布的内容进行分析,我没有使用我的crystall球来猜测代码被调用 – Stormhashe