2016-06-26 2 views
0

Я хочу сделать приложение метронома.Тип или имя пространства имен X не найдено

Я искал об этом, и я дал этот код с этого сайта:
http://gigi.nullneuron.net/gigilabs/c-metronome-with-timers-and-beeps/

Using System.Threading; 

static void Main(string[] args) 
{ 
    System.Timers.Timer timer = new System.Timers.Timer(); 
    timer.Elapsed += timer_Elapsed; 
    timer.Interval += 1000; 

    timer.Start(); 
    Console.ReadLine(); 
    timer.Stop(); 
} 

static void timer_Elapsed(object sender, ElapsedEventArgs e) 
{ 
    Console.Beep(4000, 100); 
} 

Я получаю две ошибки:

нет перегрузки для 'timer_Elapsed' соответствует делегату «ElapsedEventHandler '

Неверное название типа или пространства имен' ElapsedEventArgs 'не указано

+0

static void timer_Elapsed (отправитель объекта, System.Timers.ElapsedEventArgs e) или добавить с помощью System.Timers и удалить все префиксы 'System.Timers.'. – lexx9999

+0

@ lexx9999 Это, кажется, правильный ответ. Почему бы не написать ответ? –

+0

Parsa Jeihoun и @ lexx999, я бы не стал рекомендовать размещение пространств имен, таких как System.Timers, System.Drawing.Color и др. если вам абсолютно не нужно или нет других классов или библиотек, кроме System .... *. Это может создать проблемы, если вы используете похожие объекты или свойства из других пространств имен. С другой стороны, с помощью указателей было бы хорошо, если бы это было на короткое время, например, в методах экземпляра. – Sometowngeek

ответ

2

В верхней части файла .cs добавить using System.Timers; Или изменить свой второй метод

static void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) 
{ 
    Console.Beep(4000, 100); 
} 

Это функционально то же самое в любом случае, но лучше, чтобы добавить using.
Проблема в том, что вы указываете пространство имен System.Timer для класса Timer, но не для ElapsedEventArgs, поэтому компилятор не распознает ElapsedEventArgs.