|
2007/07/31(Tue) 18:42:33 編集(投稿者) 2007/07/31(Tue) 18:40:43 編集(投稿者)
■No6081 (Hongliang さん) に返信 Delegate,Invokeあたりを使えば出来ると思ったのですが。。。
ちょっと書き換えてみました Thread listviewThread = null; private delegate int AddIdDelegate(ListViewItem item);
void ReadIdWorker() {//中略 int count = rfidDatas.Length; for(int i = 0; i < count; i++) { ListViewItem item = new ListViewItem(rfidDatas[i].id.ToString()); if(!containFlag)//リストビューに表示されているデータと異なるデータが送られてきたら { if (listviewThread == null) { listviewThread = new Thread(new ThreadStart(ListViewIdWorker)); listviewThread.Start();
} } } } private void ListViewIdWorker() { AddIdDelegate dlg = new AddIdDelegate(ListViewIdWorker); IAsyncResult ar = this.BeginInvoke(dlg, new object[] {item});//コンパイルエラー itemは現在のコンテキストにありません } private int ListViewIdWorkers(ListViewItem item) { listViewId.Items.Add(item); return listViewId.Items.Count; } メインスレッドで作ったリストビューに別スレッドから得たデータを書き込みたいです。
forループで送られてきた複数データとリストビューに表示されているデータとを比べ、異なるデータがあったらリストビューに表示させます。 itemはListviewItem型としてListViewIdWorker,ListViewIdWorkersに使いたいのですがどうやれば別のメソッドでも使うことが出来るのでしょうか? よろしくお願いします。
|