2016-05-29 8 views
0

私はこのコードを持っている:Webサービスを5分間隔で呼び出すにはどうすればいいですか?

class ServiceConsumer 
{ 
    static void Main(string[] args) 
    { 
     //call from here retriveEvents method evry 5 minutes! 
    } 


    private static void retriveEvents() 
    { 

     IContract proxy = ChannelFactory<IContract>.CreateChannel(new BasicHttpBinding(), 
             new EndpointAddress("http://someAddress/Hydrant.svc")); 

     using (proxy as IDisposable) 
     { 
      var rows = proxy.GetData(new DateTime(2000, 5, 1)); 
     } 
    } 
} 

retriveEvents()メソッドは、プロキシを作成し、ホストサービスからデータを取得しています。 asyncroniusly retriveEvents()メソッドを呼び出して、ホストサービスevryに5分間アクセスできますか?

+1

タイマー(目盛り)を使用しますか? – Odrai

+0

この回答はあなたのために役立ちます:http://stackoverflow.com/a/21590665/2290059。例えば、Console.ReadLine();を呼び出すことによってメインスレッドから待つことを忘れないでください。 –

+0

@ YacoubMassad、Console.ReadLine()の代わりにwhileループを使用できますか? ? – Michael

答えて

0
static void Main(string[] args) 
{ 
    System.Timers.Timer aTimer = new System.Timers.Timer(); 
    aTimer.Elapsed+=new ElapsedEventHandler(OnTimedEvent); 
    aTimer.Interval=360000; 
    aTimer.Enabled=true; 

    while(true) { } 
} 

private static void OnTimedEvent(object source, ElapsedEventArgs e) 
{ 
    // Do your stuff 
    retriveEvents(); 
} 
+0

私はそれを試しました。それは主な機能のすべての行を投げたが、OnTimedEventメソッドを起動しない – Michael

+0

これは、System.Threading.Timer'の代わりに 'System.Timer.Timer'を使用します。 –

+0

@Michaelはwhile(true)ループを追加しましたか?そうでなければ、プログラムは 'retriveEvents'を呼び出す前に停止します。 –

0
var timer = new System.Threading.Timer((e) => 
{ 
    MyMethod(); 
}, null, 0, TimeSpan.FromMinutes(5).TotalMilliseconds); 
関連する問題