2012-11-12 32 views
0

在我的應用程序中,我將數據保存到我的數據庫(SQLite)。 我不想阻止我的UI,所以我保存不同勢任務數據如何獲取不同線程中的UI元素?

  await Task.Run(() => this.SaveTracks(books, filesCollection)); 

我從我的字典,數據

TextBox tmpTextBox = parseData["title_" + i] as TextBox; 

文本框當在不同勢任務不是它的工作原理很好,但是當我使用Task.Run進行設置時,我得到了Exception,我無法使用它,因爲我在不同的線程中調用了元素。我怎麼能不通過不同勢任務做起來擋住我的UI,並在主線程得到UI元素的數據

+0

等待任務後,您可以更新ui。請添加更多信息或代碼。 SaveTracks返回什麼?描述你需要做什麼? – gabba

回答

1

在啓動任務之前獲取TextBox.Text值,並將該值作爲參數傳遞。

+0

好點。謝謝你 – Fixus

3

兩個選項:

  • 分手了更大的操作讓你的循環(我假設有一個循環)仍然在UI線程中執行,但是每個單獨的保存操作都是在後臺單獨執行的任務
  • 提取全部創建任務之前需要的UI信息並捕獲該信息,以便任務永遠不需要訪問UI

無論哪種方式,結果都是一樣的:您只能訪問UI線程中的UI元素。

+0

感謝您的建議。我將最大的循環不需要UI數據放入不同的線程中。它做得很好。 UI元素在主線程中收集。謝謝 – Fixus

相關問題