在后台工作线程中使用对控件的引用是否安全?

时间:2011-11-04 09:55:42

标签: c# winforms thread-safety backgroundworker

假设我有一个控件和字符串的字典。如果我运行后台工作程序,使用控件引用来访问对应于控件的字符串是否可以安全线程?

Dictionary<Control, string> _ctlDict;
//Called in the main thread
public void Persist()
{
  foreach (var control in Controls)
  {
    _ctlDict.Add(control, control.Name);
  }
}

//Called in the background worker
public string GetControlName(Control ctl)
{
  return _ctlDict[ctl];
}

这应该没问题,因为我没有使用任何控件的属性 - 我只是使用控件的引用,对吗?

2 个答案:

答案 0 :(得分:1)

只要你不访问控件的属性或方法,是的,它是完全安全的。它只是一个对象引用,它指向一个控件无关紧要......

答案 1 :(得分:0)

唯一需要确定的是,不能同时调用Persist和GetControlName。