僞代碼:C#事件:哪個線程
class A
{
Dictionary<string, object> dic = new Dictionary<string, object>();
public Do()
{
some_a.SomeEvent += (s, e) =>
{
dic["some_string"] = new object();
};
dic["some_other_string"] = new object();
}
}
這安全嗎?這將是如果兩個字典操作都在同一個線程上。他們呢?
編輯在我的情況下,事件被觸發在與Do
相同的線程,所以它是安全的。
好吧,它取決於你的「some_a」對象調用SomeEvent處理程序的線程。如果是的話,假設它是安全的,否則,不。 – 2012-08-17 10:38:34
您可以使用類似於 的東西來檢測您正在運行哪個線程Console.Write(System.Threading.Thread.CurrentThread.ManagedThreadId); – AlSki 2012-08-17 10:41:00