C# |为数组列表创建同步(线程安全)包装器

原文:https://www . geeksforgeeks . org/c-sharp-creating-synchronized-thread-safe-wrapper-for-the-ArrayList/

Synchronized(ArrayList) 方法用于获取一个同步的 ArrayList 包装器(线程安全)。

语法:

公共静态系统。集合。数组列表同步(系统。Collections.ArrayList 列表);

这里列表是要同步的数组列表

返回值:返回一个同步的数组列表包装器(线程安全)。

异常:如果列表为空,该方法抛出参数为空异常

以下程序说明了上述方法的使用:

例 1:

// C# code to check if ArrayList
// Is Synchronized or not
using System;
using System.Collections;

class GFG {

    // Driver code
    public static void Main()
    {

        // Creating an ArrayList
        ArrayList myList = new ArrayList();

        // Adding elements to ArrayList
        myList.Add("Geeks");
        myList.Add("for");
        myList.Add("Geeks");
        myList.Add("Noida");
        myList.Add("Geeks Classes");
        myList.Add("Delhi");

        // Creates a synchronized
        // wrapper around the ArrayList
        ArrayList smyList = ArrayList.Synchronized(myList);

        // Displays the synchronization
        // status of both ArrayList
        Console.WriteLine("myList is {0}.", myList.IsSynchronized ? 
                              "Synchronized" : "Not Synchronized");

        Console.WriteLine("smyList is {0}.", smyList.IsSynchronized ?
                                "Synchronized" : "Not Synchronized");
    }
}

输出:

myList is Not Synchronized.
smyList is Synchronized.

例 2:

// C# code to check if ArrayList
// Is Synchronized or not
using System;
using System.Collections;

class GFG {

    // Driver code
    public static void Main()
    {

        // Creating an ArrayList
        ArrayList myList = new ArrayList();

        // Adding elements to ArrayList
        myList.Add("Geeks");
        myList.Add("for");
        myList.Add("Geeks");
        myList.Add("Noida");
        myList.Add("Geeks Classes");
        myList.Add("Delhi");

        // it will give error as
        // the parameter is null
        ArrayList smyList = ArrayList.Synchronized(null);
    }
}

运行时错误:

未处理异常: 系统。ArgumentNullException:值不能为空。 参数名称:列表

注意:为了数组列表的线程安全,所有操作都必须通过这个包装器完成。

参考: