2016-11-02 6 views
-1

私はコンソールアプリケーションで作業しています。タイマーメソッド内にmainメソッドに存在する配列の値を出力したいとします。しかし、コンストラクタは4つの引数しか取らないので、配列メソッドをタイマーメソッドにどのように送るか分かりません。timerメソッドのmainから配列を使用する

static void Main(string[] args) 
    { 
     int[] numbers = new int[7] {1, 2, 3, 4, 5, 6, 7}; 

     Timer t = new Timer(TimerOutput, 8, 0, 2000); 
     Thread.Sleep(10000); 
     t.Dispose(); 

     Console.ReadLine(); 
    } 
    private static void TimerOutput(Object state) 
    { 
     Console.WriteLine(""); // Here I want to putput the values of numbers[7] from main 
     Thread.Sleep(1000); 
    } 
+2

移動配列(番号)をMainメソッドの外... – FakeCaleb

+0

を私は質問とは無関係の目的のためにmainメソッド内でその値を使用しています?。だから私はMainメソッドとTimerOutputメソッドの両方でその値を使用できるようにする必要があります。 – Jockiie

+0

あなたのコードにはクラス{}がありません。@ NewCallumは「クラスをクラスレベルに配置する」ことを意味し、main()メソッドとtimeroutput()メソッドの兄弟になります。 – StingyJack

答えて

1

Programクラスの静的プロパティを配列にします。その後、イベントハンドラはそれにアクセスすることができます

private static int[] numbers; 

static void Main(string[] args) 
{ 
    numbers = new int[7] {1, 2, 3, 4, 5, 6, 7}; 

    Timer t = new Timer(TimerOutput, 8, 0, 2000); 
    Thread.Sleep(10000); 
    t.Dispose(); 

    Console.ReadLine(); 
} 
private static void TimerOutput(Object state) 
{ 
    // numbers is available in this method. 
    Console.WriteLine(""); 
    Thread.Sleep(1000); 
} 
+0

過去数時間は終わりのように感じ、あなたは私の晩を救った。ありがとう、私はそれを試して、それは動作します。スーパーは高く評価! – Jockiie

関連する問題