如何在控制台应用程序的主要方法之外使用计时器

时间:2019-03-27 09:23:32

标签: c# .net

我在类中有一个方法以List形式返回数据,我需要使用timer事件让此方法以不同的间隔执行以检查数据,并且我需要将第一个方法的返回对象返回到另一个方法方法。我必须从控制台应用程序的Main方法中调用第二种方法。

public class clsSample
{
    private static List<string> GetData()
    {            
        data = clsApp.LoadData();
        return data;
    }


    public static void InitTimer()
    {           
        Timer t = new Timer();
        t.Elapsed += new ElapsedEventHandler(OnTimedEvent);
        t.Interval = 50000;
        t.Enabled = true;                     
    }

     private static void OnTimedEvent(object source, ElapsedEventArgs e)
     {             
        GetData();            
     }

}
class Program
{
    static void Main()
    {
        List<string> data = clsSample.GetData();
    }
}

我需要从GetData()方法获取返回数据。但是不需要在Main方法中调用timer。这怎么可能?

1 个答案:

答案 0 :(得分:1)

在clsSample上输入以下内容:

  public delegate void EventRaiser(List<string> data);
  public event EventRaiser OnDataRetrieved;

并将其放在计时器方法上

 private static void OnTimedEvent(object source, ElapsedEventArgs e)
 {                  
     if(OnDataRetrieved !=null)
     {
         OnDataRetrieved(GetData())
     }
 }

然后从program.cs类

处理事件