2016-04-22 1 views
2

を使用してVisual C#で毎秒メソッドを呼び出します。別のイベントハンドラ内から初期化する必要があります。は、私はこの方法を毎秒を呼び出すタイマーを初期化しようとしていますタイマー

私はこのコードを書いたが、それはまだ私にコンパイルエラーが発生します。それらは、初期化とイベントハンドラの両方が同じクラスにあります。

private void Controllel_Opened(object sender, EventArgs e) 
    { 
     System.Timers.Timer myTimer = new System.Timers.Timer(); 
     myTimer.Elapsed += new System.Timers.ElapsedEventHandler(DisplayTimeEvent); 
     myTimer.Interval = 1000; // 1000 ms is one second 
     myTimer.Start(); 

    } 


    public static void DisplayTimeEvent(object source, ElapsedEventArgs e) 
    { 
     // code here will run every second 
    } 

お勧めはありますか?

+1

それはあなたのコンパイルエラー...大丈夫、1を与えますか? – Rob

+0

@Rob - 「DisplayTimeEvent」マッチデリゲートのための過負荷「System.Timers.ElapsedEventHandler」 – ib11

+1

それはあなたが間違ったDLLを参照している可能性があります。しかし、あなたのコードを単純化することができます: 'myTimer.Elapsed + = DisplayTimeEvent;これはあなたの問題を解決するかもしれません。 – Rob

答えて

0

まあ、おかげで、それは私が見せていたと私は単純にイベントハンドラでElapsedEventArgs前の基準に欠けていたことがわかりました。

ので、コードが完全として動作します。

public static System.Timers.Timer myTimer = new System.Timers.Timer();  

private void Controllel_Opened(object sender, EventArgs e) 
{ 
    myTimer.Elapsed += new System.Timers.ElapsedEventHandler(DisplayTimeEvent); 
    myTimer.Interval = 1000; // 1000 ms is one second 
    myTimer.Start(); 
} 

public static void DisplayTimeEvent(object source, System.Timers.ElapsedEventArgs e) 
{ 
    // code here will run every second 
} 

探してくれてありがとうを。

+0

これは同時発生の悪夢が起こるのを待っているようです。 DisplayTimeEventを配置する予定のコードの種類は何ですか? –

+0

@ Robert Harvey♦ - フォームに非表示にするメソッドを送信しようとしています。 – ib11

+0

@Robert Harvey♦ - OK、ここで私が解決しようとしている正確な問題の問題。タイマーは動作し、他のすべてのメソッドとフォームが機能します。私はタイマーイベントハンドラからの呼び出しをクロススレッドセーフで行う必要があります。 http://stackoverflow.com/questions/36785638([http://stackoverflow.com/questions/36785638/making-a-cross-thread-call-to-hide-a-form-visual-c-sharp参照] /作成 - クロススレッド - 呼び出し - 隠す - フォーム - ビジュアル - Cシャープ) – ib11

-1

また、クライアント側から同じことを行うことができます。

[WebMethod] 
public static void MyServerMethod() 
{ 
    //Code goes herer. 
} 

setInterval(function() { 
 
       $.post("../MyPage.aspx", function (data) { 
 

 
      $.ajax({ 
 
      type: 'POST', 
 
      contentType: "application/json; charset=utf-8", 
 
      url: '../MyPage.aspx/MyServerMethod', 
 
      data: '{}', 
 
      async: false, 
 
      success: function (response) { 
 
      
 
       // code goes here. 
 
      
 
       }); 
 
      }, 1000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

+1

この質問はasp.netとは関係がありません – Rob

関連する問題