我正在開發一個使用SQL Compact作爲主數據庫的WinForms應用程序。我被告知我永遠不會與UI線程混淆,每個操作都需要在UI線程之外完成。通過這個演講對於每個CRUD操作,我創建一個線程並出現一個進度條,但我認爲這可能不是最好的方法來做到這一點,我很不確定何時何地使用線程和數據庫操作。我沒有使用UI線程來進行這些數據庫調用,但是如果我願意,我沒有看到任何問題。爲了向用戶顯示信息,我需要時進行調用(以在網格或組合框上顯示數據)。這裏是一個小的一段代碼:使用線程進行數據庫操作的最佳方式是什麼?
this.SuspendLayout();
ProgressDialog progressDialog = new ProgressDialog();
Thread backgroundThread = new Thread(
new ThreadStart(() =>
{
var unitOfWork = new DAL.Implementations.Entity_Framework.UnitOfWork<dbgmEntities>();
var espacosRepository = unitOfWork.GetRepository<DAL.Espacos>();
Espacos espaco;
if (e.Row.Cells["ESP_Descr"].Value != null)
espaco = new Espacos { ESP_Nome = e.Row.Cells["ESP_Nome"].Value.ToString(), ESP_Descr = e.Row.Cells["ESP_Descr"].Value.ToString() };
else
espaco = new Espacos { ESP_Nome = e.Row.Cells["ESP_Nome"].Value.ToString() };
espacosRepository.AddOrAttach(espaco);
unitOfWork.Save();
}
));
backgroundThread.Start();
progressDialog.Show();
progressDialog.Close();
this.ResumeLayout();
我使用存儲庫模式與SQL精簡和Entity Framework 4.0中,你可以看到我做的內螺紋,而不是在UI線程這將阻止用戶數據庫操作接口,如果它是一個沉重的操作..問題是:
真的有必要從線程之外的線程進行數據庫調用線程或只是一個沉重的操作?就像在不同的表上添加多於1或2行一樣。
感謝
重新_I被告知我永遠不會mess_:那些使用_never_和_always_是_usually_錯誤。 – 2013-05-08 22:34:41
所有絕對值都是錯誤的,包括這一個。 – 2013-05-08 22:52:12