我正在学习C#。对不起新手问题。
这是我启动Windows窗体项目时由Visual Studio 2015自动生成的一些代码的一部分。它位于Form1.Designer.cs
中 protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
我试图看看我是否正确理解了线程安全的概念。在评估components
语句和调用时间null
之间,if
是否可以设置为components.Dispose()
?
提前感谢您对此有任何帮助!
答案 0 :(得分:4)
不,这不是线程安全的代码。您的假设是正确的,components
可能在支票和Dispose
之间变为空。
但是,这并不意味着代码不好。并非所有代码都需要是线程安全的。如果两个线程正在处理同一个对象,那么 行为很可能是一个错误,而不是Dispose
错误。