在后台工作线程中使用C#全局变量是否安全大家好,我正在开发一个简单的桌面应用程序,它需要处理一些操作,例如加载网页可能会阻塞主线程,因此我将代码移至后台工作程序。我的问题是有一个重类叫UCSProject,里面有很多string和List字段,我需要传一个这个类的实例给后台worker,因为这个类有点重,我想减少重复的次数直接使用全局变量的实例,而不是将其作为参数传递给后台工作者。简而言之,我只想知道在C#中从后台工作线程访问全局变量是否安全除非您的线程(后台和普通线程)都没有修改对象,否则它是安全的。如果你想让对象互相修改,使用一个Lock根据你的问题,我怀疑你不明白变量是如何工作的。你不需要一个全局变量来只拥有一个对象的一个??副本。所有变量都将指向完全相同的对象,除非您克隆它或创建一个旧变量作为原型。换句话说,全局变量不会改变,除非你明确地创建一个新的副本,如前一段所述。如果您认为创建副本会损害性能,我还想知道您的课程有多重?howmuchdoesitweightUPDATE本系列文章详细介绍了heap和stack的内容:http://www.c-sharpcorner.com/uploadfile/rmcochran/csharp_memory01122006130034pm/csharp_memory.aspx是安全的,但是必须同步访问到变量,例如使用锁定语句。请参阅MSDN库中的“锁定语句”。不,它不会,除非您在使用它的任何数据字段后立即使用lock(object){}锁定它。如果您不修改任何字符串或变量,则不需要锁定。如果数据在整个应用程序中共享,我也会考虑将其设为静态类——那么您就不需要传递实例了。如果您需要修改或更新数据-使用Lock。您也可以使用[ThreadStatic]。每个线程的变量值都是唯一的。有关如何使用它的信息,请参阅MSDN。以上就是C#学习教程的全部内容:在后台工作线程中使用C#全局变量安全吗?代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
