2017-03-06 8 views
0

だから、ここで私のプロジェクト全体を掲示せず、私は私ができる最善のように、それを合計します:ターゲット別のクラスでオブジェクト変数

class Program 
{ 
    static void Main(string[] args) 
    { 
     Thing one = new Thing(); 
     one.addTimer(10); 
     one.addTimer(4); 
     one.addTimer(2); 
     one.addTimer(8); 

    } 
} 

class Counter 
{ 
    private int Seconds; 
    private int TimerNum; 
    public Counter(int SecondsX) 
    { 
     Seconds = (SecondsX * 1000); 
    } 

    public void TimerCall(){ 
    Thread.sleep(Seconds); 
    CounterCallBack(); 
    } 

    public void CounterCallBack() 
    { 
     Console.WriteLine("Timer " + TimerNum + " Done"); 
     //Then the time is up the call back is executed 
     //The issue I am having is how do I trigger the next timer for the list timers to go from hear automatically. It would send back TimerNum to Thing.Continue 
    } 

} 

class Thing 
{ 
    List<int> timers = new List<int>(); 

    public Thing() 
    { 

    } 
    public void addTimer(new Timer(int SecondsToAdd)) 
    { 
     timers.Add(SecondsToAdd); 
    } 
    public void StartTimers(){ 
    timers[0].TimerCall(); 
    } 

    public void Continue(int LastRun){ 
    if(timers.count()-1>= LastRun){ 
    timers[LastRun].TimerCall(); 
    } 
    } 

} 

だから私はキックするカウンタから続行メソッドにアクセスする必要があります次のタイマーをオフにする。 同じことをする方法を見つける必要があります。 ただし、ユーザーが

Programクラスから発生したもの)、編集、追加、およびタイマーを削除できるようにする必要があり

(これは簡易版である)私のプログラムでCounterが実行されるタイマーコールとコールバックであることを忘れないでください非同期に。

でも可能ですか?あるいは、私はこのアプローチを廃止し、正方形から開始する必要がありますか?

また、私はこれが荒いことを知っていますが、このプロジェクトはチャリティーのためのものです。このプロトタイプを作成すると、それをクリーンアップする予定です。また、私は16です。だから、あなたが与えることができるどんな助けもよく評価されるでしょう。

+0

あなたはtimers.Add(新しいTimer(SecondsToAdd))を行うことを意味しましたか? int型ではなくTimer型のリストタイマーを作成しますか?タイマーではなくintでTimerCall()を呼び出しています。 –

+0

はい、ありがとうございます。プログラムを実行し続ける方法でメソッドを追加し、カウンターでオブジェクト変数を作成することでこれを行うことができると思います。しかし、それはちょうど乱雑です、私はまだ誰かがそれを行うためのより良い方法を見つけることを望んでいます。 –

答えて

0

これは汚い答えですが、私はオブジェクト変数を格納するための辞書を使い、正しいタイマーのIDと実行する次のタイマーのインデックスを渡す査定メソッドを持っています。それから、次のタイマーなどが呼び出されます。 プロトタイプのために汚いが機能的です。

関連する問題