投稿者 魔界の仮面弁士  (社会人) 投稿日時 2010/7/28 16:42:16
> private System.Threading.Timer timer;
System.Windows.Forms.Timer では、何か都合が悪いのでしょうか?
dataGridView1 を扱うのですから、スレッドを分けないほうが良い気がしますが…。

> ★部でNullReference~が発生します。
実際には、Invoke そのものがエラーになっているのではなく、
Invoke した先でエラーが発生している物と思われます。
try ~ catch ブロック等を用いて、どの部分に問題があったのかを Trace してみてください。

> どこか間違ってたりしますか?
ServiceManeger を使わないコードとして、たとえば
//using (ServiceManeger sg = new ServiceManeger())
{
    this.dataGridView1[1, 0].Value = "sg.ServiceState";
    this.dataGridView1[1, 1].Value = "sg.ListenerState";
}
のように修正して実験してみましたが、特に問題無く画面に表示されました。

なお、dataGridView1 には特に追加設定を加えていませんが(列定義なし、DataSource 無しの状態)、
起動時に行列数を割り当てて実験しています。
private void Form1_Load(object sender, EventArgs e)
{
   dataGridView1.ColumnCount = 3;
   dataGridView1.RowCount = 3;
   stateCallback = new System.Threading.TimerCallback(WorkerStateGet);
   timer = new System.Threading.Timer(stateCallback, null, 15000, 15000);
}