C# 在后台线程上初始化时,我的字段是否应该是可变的?

C# 在后台线程上初始化时,我的字段是否应该是可变的?,c#,.net,multithreading,C#,.net,Multithreading,在应用程序启动时,我在后台线程上实例化一个类,然后将其分配给一个变量。稍后,我将从主线程访问该变量。此变量只分配一次 我的理解是,我不需要在这里使用volatile关键字,因为在UI线程中首次访问引用之前,无法缓存引用。我的想法是正确的,还是遗漏了什么 我说得对吗 对。只有当一个线程重复读取变量(从另一个线程写入)时,缓存才会出现问题 因为分配给引用是原子的,所以您是安全的

在应用程序启动时,我在后台线程上实例化一个类,然后将其分配给一个变量。稍后,我将从主线程访问该变量。此变量只分配一次

我的理解是,我不需要在这里使用volatile关键字,因为在UI线程中首次访问引用之前,无法缓存引用。我的想法是正确的,还是遗漏了什么

我说得对吗

对。只有当一个线程重复读取变量(从另一个线程写入)时,缓存才会出现问题

因为分配给引用是原子的,所以您是安全的