ガイガーアプリ

ガイガーアプリを作り直すことにした。

今のやつは、1~2日でアプリが落ちてしまうので。

テキストファイルに落として、ODBCでMySQLに更新していたけど、どこで落ちてるのかわからん。。。

いまさらCDatabaseとかデバッグしたくないし。

なので、C#で、EntityFrameworkでやることにした。

ほんとはVS2012でやりたかったけど、ExpressだとMySQLのデータプロバイダがインストールできないみたい?なのでVS2010にした。

プロジェクトにADO.NET Entity Data Modelを追加して、

g003

モデルを作成&DBからテーブルをマップ。

g002

表示は、ModelのコレクションをWPFのDataGridにバインドするだけ。楽だ。

[csharp]
var cont = new ModelGeigerContainer();
this.dataGrid1.ItemsSource = cont.geiger.OrderByDescending(x => x.date).Take(100);
[/csharp]

更新は、Timerのスレッドから1分毎に更新するんだけど、Modelをnewしてコレクションに追加して、SaveChanges。

[csharp]
_timer = new Timer(
(state) =>
{
// CPM取得
int count = 0;
int time = 0;
DLLWraper.GetCountTime(device, out count, out time);
DateTime dbDatettime = DateTime.Now;

// DB更新
if (DBIsChecked)
{
int addCount=0;
using (var db = new ModelGeigerContainer())
{
geiger data = new geiger()
{
date = dbDatettime,
data = count
};
db.geiger.AddObject(data);
addCount = db.SaveChanges();
}
}

// ガイガーカウンタクリア
ret = DLLWraper.Clear(device);
}
, null, _interval, _interval);
[/csharp]

usingで1分毎にDB接続のインスタンス破棄されるのが、作り的にどうなんだろう・・・

簡単なDB操作だけど、SQLは書かなくてよい。

なによりLinq使えるのがいいな。( ・∀・)イイ!

g001g004

まだ、いろいろできてないが、とりあえず動かしっぱなして様子見しよう。

%d人のブロガーが「いいね」をつけました。