2016-03-13 102 views
0

我需要在我的應用程序中線程安全,您如何推薦設計代碼? 我希望method1將每5秒運行一次,並連接到數據庫,並在OnclickButton(object sender ,event e)上連接數據庫。運行在不同線程上的方法WPF UI

它是這樣的:

method1() 
{ 
    // connect db 
    // do something 
} 
OnclickButton(object sender,event e) 
{ 
    // connect db 
    // do something 2 
} 

謝謝你們

+0

如何從數據庫檢索到的數據將被如何處理? – Karolis

+1

你的問題在很大程度上取決於你打算如何處理這些數據庫連接。例如,如果你只是從他們那裏閱讀 - 那麼它已經是線程安全的。 –

回答

1

嗯,這是有點廣,但在我看來,你需要2種選擇:

  1. 使用MVVM pattern這是標準德事實上適用於WPF應用程序。您可以使用許多MVVM庫,如MVVM light toolkit。它將幫助你分離你的表示邏輯和業務邏輯。
  2. 好的,在第一步之後,您將擁有ViewModel,綁定的數據可以從Model更新或啓動操作。您的ViewModel可以以異步方式從Model獲取數據,並在UI線程中更新自己的專有名稱。如果你使用的是Asynchronous Programming with Async and Await,你可以繼續使用你的代碼,如果你的方法從UI線程啓動。如果使用的是「舊式」的異步編程,那麼你可以使用Dispatcher類在UI線程更新綁定屬性:

    var newUsername = model.GetUserName(); // background thread 
    Application.Current.Dispatcher.BeginInvoke(
        new Action(() => this.UserName = newUsername)); 
    
相關問題