2017-04-25 130 views
0

所以我試圖在我的代碼中加入一個定時器,在每1.5秒我的vehCount將增加一個。定時器控制增量計數器

using System; 
 
using System.Collections.Generic; 
 
using System.Linq; 
 
using System.Text; 
 
using System.Threading.Tasks; 
 
using System.Timers; 
 

 
namespace AssignmentCA 
 
{ 
 
    class Program 
 
    { 
 
     static void Main(string[] args) 
 
     { 
 
      Console.WriteLine(Vehicle.vehCount); 
 
      Console.ReadLine(); 
 
     } 
 
    class Vehicle 
 
     { 
 
     public static int vehCount = 0; 
 
     private void spawnVehicle() 
 
      { 
 
       Timer tm = new Timer(); 
 
       tm.Interval = 1500; 
 
       tm.Elapsed += timerTick; 
 
       vehCount++; 
 
       tm.Start(); 
 
      } 
 
      private void timerTick(object sender, EventArgs e) 
 
      { 
 
       vehCount++; 
 
      } 
 
     } 
 
    } 
 
}

未用過計時器前,當我跑我得到0,但它永遠不會遞增1。我怎樣才能做到這一點。

+0

你的'spawnVehicle'方法沒有被調用 - 定時器不被創建 – Ryan

+0

是車輛意味着一個靜態類嗎? – Orangesandlemons

+0

使你的方法公開和靜態 - 然後在Main中調用。 – Ryan

回答

2

完全不清楚你想要做什麼,但你根本就沒有調用spawnVehicle方法。

以下是您發佈內容的解決方案。看看spawnVehicle在類Vehicle的靜態構造函數上調用!爲了從靜態構造函數調用spawnVehicle,它也需要是靜態的。

class Vehicle 
{ 
    static Vehicle() 
    { 
     spawnVehicle(); 
    } 

    public static int vehCount = 0; 
    static void spawnVehicle() 
    { 
     Timer tm = new Timer(); 
     tm.Interval = 1500; 
     tm.Elapsed += (s, e) => vehCount++; 
     vehCount++; 
     tm.Start(); 
    } 
} 
+1

通過訪問vehCount,構造函數被自動調用 – user1845593

+0

輸出到控制檯將很高興看它是否工作。 – Ryan