情報が少ないので推測があるのですが、「Windowsフォームアプリケーション」で作成されていることを前提として回答させていただきます。
var timer = new System.Timers.Timer();
・・・
どうすれば、このタイマーにアクセスすることができますか?
と書かれているところから、何らかのメソッド内で一時的にtimer変数へ代入していると思います。こういった場合、Form1クラスのフィールドとして宣言してクラス内の各メソッドで使いまわします。
C#
1using System.Diagnostics;
2using System.Timers;
3using System.Windows.Forms;
4
5namespace WindowsFormsApp1
6{
7 public partial class Form1 : Form
8 {
9 // privateフィールドとして宣言
10 private System.Timers.Timer timer = null;
11
12 public Form1()
13 {
14 InitializeComponent();
15
16 timer = new System.Timers.Timer();
17 timer.Interval = 500;
18 timer.Elapsed += TimerHandler;
19 timer.AutoReset = true;
20 timer.Enabled = true;
21 }
22
23 private void Form1_FormClosing(object sender, FormClosingEventArgs e)
24 {
25 if (timer != null)
26 {
27 timer.Stop();
28 // timer.Dispose();
29 }
30 }
31
32 private void TimerHandler(object sender, ElapsedEventArgs e)
33 {
34 Debug.WriteLine("Elapse: " + e.SignalTime);
35 }
36 }
37}
今回はFormClosing
のイベントでハンドリングされている為、Timer.Close
にしていますが、アプリの造りによってはFormClosing
イベントをキャンセルしてフォームを閉じないようにすることもできるので、そんな場合はFormClosed
イベントでTimer.Close
またはTimer.Dispose
を使うのが適切かもしれません。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/10 03:10