2017-06-16 27 views
0

我有一個DataGridView用戶正在通過keyup和keydown移動。移動DataGridView並加載圖片而不會凍結UI

現在我正在使用keyup事件來刷新imageBox中的圖像,具體取決於一列中的值。如果用戶只向下或向上移動一行,它可以正常工作。問題在於,如果用戶通過向上或向下輕敲幾次快速移動幾行,UI總會凍結一段時間。

如何防止UI凍結並使圖片加載「backgroundwork」?

到目前爲止,我的代碼:

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

好吧,現在沒有嘗試捕捉任何解決方案? –

+0

考慮使用異步任務它不會阻止用戶界面,但會延遲顯示圖像。告訴我它是如何發展的,或者如果你需要一個關於如何做到這一點的代碼片段。 – sBanda

回答

0

我有一個想法,可能是有用的:

創建一個子程序網格移動和的LoadPicture之間起作用。如果您打電話給LoadPicture,請調用該例程。

此例程將:

1-獲取當前GRID行或圖片名稱;

2-啓動一個Task.Delay幾毫秒甚至1秒; 3)將當前GRID行或圖片再次獲取到另一個變量中並與第一個變量進行比較(步驟1);

如果沒有變化,請調用LoadPicture ...