2014-12-29 6 views
-1

Я работаю над таймером в C#, просто чтобы пообщаться, так как я никогда раньше этого не делал. Я хотел иметь метод OnTimedEvents, который я объявлял в отдельном классе, поскольку я буду называть его в разных других классах для различных других тестов, но я не могу его правильно вызвать, не получая ошибок. В частности, я получаю No Overload Method for Method '' принимает 0 аргументов. Я не могу обойти это, как с другими методами. Это код:Метод вызова вызова из другого класса

class MSOfficeApps { 
    public static Timer aTimer; 

    public void appWord() { 
     var programCS = new Program(); 
     Microsoft.Office.Interop.Word.Application WordObj; 
     WordObj = (Microsoft.Office.Interop.Word.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Word.Application"); 
     for(int i = 0; i < WordObj.Windows.Count; i++) { 
      object idx = i + 1; 
      Microsoft.Office.Interop.Word.Window WinObj = WordObj.Windows.get_Item(ref idx); 
      Console.WriteLine(WinObj.Document.FullName); 
      aTimer = new System.Timers.Timer(600000); //Sets timer to 6 minute increments 
      aTimer.Elapsed += ElapsedEventHandler(programCS.OnTimedEvent()); //Throwing an error at programCS.OnTimedEvent() 
     } 
    } 

И это то, что я пытаюсь вызвать

class Program { 
    private static void Main(string[] args) { 
     SearchProcesses sP = new SearchProcesses(); 

     sP.BuildProcessLists(); 

     Console.WriteLine("Press Enter to exit the program..."); 
     Console.ReadLine(); 
    } 

    public static void OnTimedEvent(Object source, ElapsedEventArgs e) { 
     Console.WriteLine("Event was raised at {0}", e.SignalTime); 
    } 
} 

Пожалуйста посоветуйте :)

+3

Советы: описать общие ошибки (после их тщательного чтения, размышления о том, что они означают, и поиска). – user2864740

+0

Просто предположим, но я думаю, вы хотите, чтобы 'MSOfficeApp' и' appWord' были статическими. – juharr

+0

Я добавил ошибку, с которой сталкиваюсь. Статический не помогает. – SavvyK

ответ

0

Смените

aTimer.Elapsed += ElapsedEventHandler(programCS.OnTimedEvent()); 

в

aTimer.Elapsed += ElapsedEventHandler(programCS.OnTimedEvent); 

Вы вызываете programCS.OnTimedEvent, а не передаете его как ссылку (и вызываете ее без аргументов), таким образом, ошибку.

+0

Я сам себя провожу, вот и все. ElapsedEventHandler выдает ошибку («тип», но используется как «переменная»), но я могу это исправить самостоятельно. Спасибо, Дэвид! – SavvyK

+0

Не беспокойтесь. Однако, если вы в будущем предоставите все детали ошибки в своем вопросе, люди смогут быстрее помочь вам, и вы с меньшей вероятностью опуститесь на голосование или увидите близкие голоса, появляющиеся :) –

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