私はタイマーを持っていますが、タイマーコールバックを別の関数に入れたいのですが、このエラーが発生します。非スタティックメンバーにアクセスするにはオブジェクト参照が必要です
オブジェクト参照が「」非静的フィールド、メソッド、またはプロパティにアクセスするために必要です...
私はstaticとしてデリゲートイベントや メンバ変数としてこれらのコールバックを宣言すると、それは動作します良い。私はそれをそのままにしておくべきですか?
class MainClass
{
private Timer _timer = null;
private TimeSpan _millisecs;
public static void Main (string[] args)
{
Application.Init();
MainWindow win = new MainWindow();
Label lbl = new Label();
lbl.Text = "00:00";
Table tbl = new Table(2, 2, true);
tbl.Name = "tbl";
Button btn = new Button("Start");
tbl.Attach(lbl, 0, 2, 0, 1);
tbl.Attach(btn, 0, 1, 1, 2);
Button btn_stop = new Button("Stop");
tbl.Attach(btn_stop, 1, 2, 1, 2);
btn.Clicked += StartClick;
btn_stop.Clicked += StopClick;
win.Add(tbl);
win.ShowAll();
Application.Run();
}
private void StartClick(object obj, EventArgs args)
{
if (_timer == null) {
_timer = new Timer();
_timer.Elapsed += delegate(object sender, ElapsedEventArgs e) {
_millisecs = _millisecs.Add(new TimeSpan(0, 0, 0, 0, 50));
lbl.Text = new DateTime(_millisecs.Ticks).ToString("ss:ff");
};
_timer.Interval = 50;
_timer.Enabled = true;
}
_timer.Start();
}
private void StopClick(object obj, EventArgs args)
{
_timer.Stop();
}
}
なぜApplication.Run(new MainWindow())を使用しないでください。そのクラス内のイベントを購読しますか? – aspark