在沒有鎖定的情況下在屬性設置器中啓動任務有什麼問題嗎?在屬性設置器中啓動任務
private someObject obj;
public SomeObject Obj
get { return obj; }
set
{
if (value != obj)
{
Task.Factory.StartNew(() =>
{
UpdateToSql(value); //if object exists updates it other wise inserts it
});
obj = value;
OnPropertyChanged("Obj");
}
}
這是一個非常糟糕的主意。你的API的任何消費者(這不是你自己)會非常驚訝地發現設置'Obj'使服務器調用將值寫入數據庫。 –
@KirkWoll即使它裏面有一個Task? – FPGA
這並不重要。關鍵是制定者不應該做那種重型工作。它應該與設置字段的價值一樣沒有影響力。如果你的代碼要通過網絡來訪問Web服務或數據庫,那麼應該通過一個正確命名的方法(如SaveChanges())來清楚說明。 –