我有一些庫工具使事情變得更簡單。如何讓這個c#屬性線程安全?
public static RequestUow Uow
{
get { return ContextItemsHelper.Get<RequestUow>("Uow"); }
set { ContextItemsHelper.Set<RequestUow>("Uow", value); }
}
而且在ContextItemsHelper
public static T Get<T>(string key)
{
Guard.NullOrEmpty(key, "key");
object obj = Items[key];
return obj.IsNotNull() ? (T)obj : default(T);
}
static IDictionary Items { get { return HttpContextHelper.Current.Items; } }
這工作得很好,但我現在要檢查屬性UOW爲null,如果設置一個新的RequestUow並返回。
我看過的例子涉及設置自己的成員變量,但是我想知道這是否可能是線程安全的。
任何人有任何建議或解決方案提供?
你還沒有真正提供足夠的代碼來告訴你如何使這個「線程安全」。首先,如果'ContextItemsHelper'是公共的,那麼你不能使你的'Uow'屬性是線程安全的,因爲你不知道其他線程可能在用ContextItemsHelper來做什麼。你可以嘗試使'ContextItemsHelper.Get'線程安全;但如果其他代碼使用'ContextItemsHelper.Items'屬性,則會出現同樣的問題。 –