所以我必須在不同的線程等2類之間共享一個類的實例常見。讓我解釋一下:線程安全(是嗎?)
public class Config
{
public IEnumerable<Regex> GetSafeRuleRegex()
{
foreach (string rule in this.SafeRules)
{
Regex regex = null;
try
{
regex = new Regex(rule, RegexOptions.IgnoreCase);
}
catch(Exception e)
{
Trace.Write(e.Message);
}
if (regex != null)
yield return regex;
}
}
}
public class Dispatcher
{
public void Start()
{
var config = new Config();
for (var i = 0; i < 10; i++)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(o => new Item(config)));
}
}
}
這會導致鎖定問題嗎?
什麼是this.SafeRules?採集?它被修改了嗎? – 2010-11-11 18:17:10
不知道什麼'Item'確實有'config'或Config'的'其他人來說是不可能告訴這是否會引起「鎖定問題」。無論如何,鎖定問題是什麼? – MSN 2010-11-11 18:19:57
我應該說比賽條件。我的錯。 @Aaron:安全規則不會經常修改,他們坐在配置文件中。我是線程新手,所以我不確定如何存儲正則表達式列表並使用它們,但我需要確保用戶傳入了有效的正則表達式,所以應用程序不會崩潰。 – 2010-11-12 14:50:23