在后台工作线程中使用C#全局变量是否安全

Vam*_*msi 4 c# multithreading backgroundworker thread-safety

嗨,我正在研究一个简单的桌面应用程序,它需要处理一些操作,如加载可能阻塞主线程的网页,所以我将代码移动到后台工作者.

我的问题是有一个名为UCSProject的繁重类,它包含许多字符串和List字段,我需要将此类的实例传递给后台worker,因为该类有点重,我想减少重复次数实例直接使用全局变量,而不是将其作为参数传递给后台工作者.

为了简短起见,我只想知道从C#中的后台工作线程访问全局变量是否安全

Ram*_*Vel 5

它是安全的,除非你的线程(背景和正常)都没有修改对象.

如果希望彼此修改对象,请使用Lock