2016-11-02 2 views
-1

Я работаю в консольном приложении, и я хочу вывести значение массива, существующего в основном методе внутри метода таймера. Однако я не знаю, как отправить значения массива методу таймера, поскольку конструктор принимает только 4 аргумента.Использование массива из основного в методе таймера

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

Отведите массив (номера) за пределами основного метода ... – FakeCaleb

+0

Я использую их значения внутри основного метода для целей не имеющих отношения к вопросу?. Поэтому мне нужно иметь возможность использовать его значение как в методе 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

 Смежные вопросы

  • Нет связанных вопросов^_^