2017-06-16 12 views
0

DataGridView私はユーザーがキーアップとキーダウンを移動しています。DataGridViewを移動し、UIをフリーズせずに画像をロード

今のところ、keyBoxイベントを使用して、imageBox内の画像を1つの列の値に応じて更新しています。ユーザーが1行だけ上下に動かすとうまくいきます。問題は、ユーザーが数回上または下のキーをタップして数行をすばやく移動する場合、UIが常にしばらくの間固定されることです。

UIのフリーズを防止し、画像の読み込みを「バックグラウンド」にするにはどうすればよいですか?

これまでのところ、私のコード:

private void LoadPicture(string path) 
{ 
    threadworker = new Thread(() => pictureBox1.Image = path); 
    threadworker.Start(); 
} 

public void datenübergeben() 
{ 
    if (dataGridView1.CurrentRow.Cells["Bild1"].Value.ToString().Length != 0) 
    { 
     LoadPicture(dataGridView1.CurrentRow.Cells["Bild1"].Value.ToString()); 
    } 
} 
+1

別のスレッドでGUIコントロールにアクセスしないでください。空のTry-Catchは決して使用しないでください。 – LarsTech

+0

これで解決策を試してみることなくOKです。 –

+0

非同期タスクを使用することを検討してください。UIをブロックすることはありませんが、画像は遅れて表示されます。それがどうなるか、またはこれを行う方法についてコードスニペットが必要な場合は、私に知らせてください。 – sBanda

答えて

0

私が役に立つことができるという考えを持っている:

はグリッド移動とLOADPICTUREとの間で作用するサブルーチンを作成します。あなたはLoadPictureを呼び出し、そのルーチンを呼び出します。

このルーチンは:

1現在のGRIDの行または画像名を取得します。

2タスクを開始します。数ミリ秒または1秒間の遅延。

3現在のGRID行またはピクチャを別の変数にもう一度取得し、最初のものと比較します(手順1)。

変更がなければ、LoadPicture ...

関連する問題