C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: スレッドタイマーを使用したデーモンの取得


(過去ログ 87 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■51888 / inTopicNo.1)  スレッドタイマーを使用したデーモンの取得
  
□投稿者/ tecc (1回)-(2010/07/24(Sat) 15:42:37)

分類:[.NET 全般] 

スレッドタイマーを使用したデーモンの取得

スレッドタイマーを使用し、2個の特定されたサービスを取得しようと
考えています。このサービスは、頻繁に状態が変わる為
スレッドタイマーを利用し10分起きにサービスの情報を取得させたく思って作成しています。

表示には、DataGridViewを利用しています。

サービスゲットクラスを作成し、データテーブルを作成しその値を返すメソッドがあります。
namespace ServiceWatchWindowsApplication
{
public class ServiceManeger : System.IDisposable
{
public System.Data.DataTable ServiceNameAdapter()
{
dt.Clear();

System.ServiceProcess.ServiceController sc =
new System.ServiceProcess.ServiceController("service1", ".");

System.Data.DataRow dr = dt.NewRow();
dr["ServiceName"] = sc.ServiceName.ToString();
dr["State"] = sc.Status.ToString();
dr["MachineName"] = sc.MachineName.ToString();
dt.Rows.Add(dr);

return dt;
}
}
}

この値を、フォームクラスから

dataGridView1.DataSource = ServiceManeger.ServiceNameAdapter にて

dataGridViewに値を取得しています。

この時、スレッドから発生した場合にdataGridViewのDataErrorイベントが発生して
しまいます。

エラー内容は、(-1, 2)のセルでエラーが発生しました。
インデックス 2 に値がありません。とでます。

初回のサービスの取得はできていてServiceControllerの引数やDataGridViewの
Row/Colは固定値なので何故このようなエラーがでてしまうのか
教えて欲しいです。

よろしく御願いします。
引用返信 編集キー/
■51889 / inTopicNo.2)  Re[1]: スレッドタイマーを使用したデーモンの取得
□投稿者/ tecc (4回)-(2010/07/24(Sat) 16:27:29)
No51888 (tecc さん) に返信
> スレッドタイマーを使用したデーモンの取得
>
> スレッドタイマーを使用し、2個の特定されたサービスを取得しようと
> 考えています。このサービスは、頻繁に状態が変わる為
> スレッドタイマーを利用し10分起きにサービスの情報を取得させたく思って作成しています。
>
> 表示には、DataGridViewを利用しています。
>
> サービスゲットクラスを作成し、データテーブルを作成しその値を返すメソッドがあります。
> namespace ServiceWatchWindowsApplication
> {
> public class ServiceManeger : System.IDisposable
> {
> public System.Data.DataTable ServiceNameAdapter()
> {
> dt.Clear();
>
> System.ServiceProcess.ServiceController sc =
> new System.ServiceProcess.ServiceController("service1", ".");
>
> System.Data.DataRow dr = dt.NewRow();
> dr["ServiceName"] = sc.ServiceName.ToString();
> dr["State"] = sc.Status.ToString();
> dr["MachineName"] = sc.MachineName.ToString();
> dt.Rows.Add(dr);
>
> return dt;
> }
> }
> }
>
> この値を、フォームクラスから
>
> dataGridView1.DataSource = ServiceManeger.ServiceNameAdapter にて
>
> dataGridViewに値を取得しています。
>
> この時、スレッドから発生した場合にdataGridViewのDataErrorイベントが発生して
> しまいます。
>
> エラー内容は、(-1, 2)のセルでエラーが発生しました。
> インデックス 2 に値がありません。とでます。
>
> 初回のサービスの取得はできていてServiceControllerの引数やDataGridViewの
> Row/Colは固定値なので何故このようなエラーがでてしまうのか
> 教えて欲しいです。
>
> よろしく御願いします。


ごめんなさい。Invokeするの忘れてました。


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -