专栏首页GreenLeavesC# 利用线程进行延时初始化

C# 利用线程进行延时初始化

LazyInitializer.EnsureInitialized方法,通过System.Threading可以完成延时初始化属性的功能,具体请参考官网

这是该方法的源码,在net core5.0的runtime源码中,很遗憾没有任何实现,所以只能参考官网的解释,进行使用,下面是使用这个方法需要注意的点

(1)、作用

Initializes a target type if it hasn't already been initialized.说明这个类是用来初始化的实例的.

(2)、注意点

i、This method may only be used on reference types. 该方法只对引用类型有效.

ii、valueFactory may not return a null 实例工厂不得返回空引用

vi、

(3)、

    class Program
    {
        static void Main(string[] args)
        {
            var tool = new Tool();
            tool.ConfigureMin();
            tool.ConfigureMax();
            tool.PrintOption();
            Console.ReadKey();
        }

    }

    public class Tool
    {
        public void ConfigureMax()
        {
            Option.Max = "Max";
        }

        public void ConfigureMin()
        {
            Option.Min = "Min";
        }

        public void PrintOption()
        {
            Console.WriteLine($"Max:{Option.Max}");
            Console.WriteLine($"Min:{Option.Min}");
        }

        private Option _option;
        public Option Option
        {
            get
            {
                if (_option == null)
                {
                    _option= new Option();
                }
                return _option;
            }
            set
            {
                _option = value;
            }
        }
    }

    public class Option
    {
        public string Max { get; set; }

        public string Min { get; set; }
    }

这是常用得写法,在日常开发中经常会遇到.两个方法(ConfigureMax、ConfigureMin)操作同一个属性(Option),且两个方法各自的操作之后的结果要在同一线程中被保留.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 速读原著-双重检查锁定与延迟初始化

    在Java 程序中,有时候可能需要推迟一些高开销的对象初始化操作,并且只有在使用这些对象时才进行初始化。此时程序员可能会采用延迟初始化。但要正确实现线程安全的延...

    cwl_java
  • 剑指Offer面试题:1.实现Singleton模式

    说来惭愧,自己在毕业之前就该好好看看《剑指Offer》这本书的,但是各种原因就是没看,也因此错过了很多机会,后悔莫及。但是后悔是没用的,现在趁还有余力,把这本书...

    Edison Zhou
  • 基于FPGA的模拟 I²C协议系统设计(下)

    今天给大侠带来基于FPGA的 模拟 I²C 协议设计,由于篇幅较长,分三篇。今天带来第三篇,下篇,程序的仿真与测试。话不多说,上货。

    FPGA技术江湖
  • 基于 FPGA 的 模拟 I²C协议设计(下)

    大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。...

    FPGA技术江湖
  • 从Java内存模型角度理解安全初始化

    如大家所知,Java代码在编译和运行的过程中会对代码有很多意想不到且不受开发人员控制的操作:

    lyb-geek
  • JMM—详细总结

    Java并发的通信机制是通过共享内存实现的。线程之间共享程序的公共状态,线程通过读写内存中的公共状态进行隐式通讯。这对程序员是透明的,我们需要理解其工作机制,以...

    用户5325874
  • 实时操作系统

    一般的linux都是GPOS(通用)内核。GPOS是不保证实时的,但是对于大多数应用程序来说是没有问题的。GPOS可以充分利用物理资源。但在实时性要求性比较高的...

    后端云
  • 五分钟搭建BERT服务,实现1000+QPS​,这个Service-Streamer做到了

    简介:刘欣,Meteorix,毕业于华中科技大学,前网易游戏技术总监,现任香侬科技算法架构负责人。之前专注游戏引擎工具架构和自动化领域,2018年在GDC和Go...

    AI科技大本营
  • Man Group:一个高性能、低延迟的交易、执行系统如何建立?

    由于外汇交易的特点,其对于我们交易系统的低延迟运行至关重要。银行源源不断地向我们提供报价,然后我们对报价进行比较,以选择最优的价格进行交易。因此,实时接收报价是...

    量化投资与机器学习微信公众号

扫码关注云+社区

领取腾讯云代金券