InvokeとDelegeteについて
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2010/7/28 16:42:16
> private System.Threading.Timer timer;
System.Windows.Forms.Timer では、何か都合が悪いのでしょうか?
dataGridView1 を扱うのですから、スレッドを分けないほうが良い気がしますが…。
> ★部でNullReference~が発生します。
実際には、Invoke そのものがエラーになっているのではなく、
Invoke した先でエラーが発生している物と思われます。
try ~ catch ブロック等を用いて、どの部分に問題があったのかを Trace してみてください。
> どこか間違ってたりしますか?
ServiceManeger を使わないコードとして、たとえば
なお、dataGridView1 には特に追加設定を加えていませんが(列定義なし、DataSource 無しの状態)、
起動時に行列数を割り当てて実験しています。
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);
}
投稿者 tecc  (社会人)
投稿日時
2010/7/29 13:46:08
推察されたようにServiceManegerにてエラーがでていました。
sg.ServiceState の内部のサービス参照用クラスのインスタンスが
変なタイミングで破棄の保証されてました。
ありがとうございました。
sg.ServiceState の内部のサービス参照用クラスのインスタンスが
変なタイミングで破棄の保証されてました。
ありがとうございました。
VB.NETではないので雑談カテで書きます。
こんな感じのコードで、エラーがでます。
★部でNullReference~が発生します。
以下は内容です。
「オブジェクト参照がオブジェクト インスタンスに設定されていません。」
参考ページはここです。
http://www.atmarkit.co.jp/fdotnet/dotnettips/312ctrlinvoke/ctrlinvoke.html
どこか間違ってたりしますか?