• 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),且两个方法各自的操作之后的结果要在同一线程中被保留.

  • 相关阅读:
    vue cli 3 构建vue项目
    hadoop综合大作业
    理解Mapreduce
    熟悉常用的HBase操作
    常用的HDFS操作
    爬虫大作业
    数据结构化与保存
    爬取新闻
    网络爬虫基础练习
    Hadoop综合大作业
  • 原文地址:https://www.cnblogs.com/GreenLeaves/p/14357959.html
Copyright © 2020-2023  润新知