📜  C#中的Queue.Synchronized()方法

📅  最后修改于: 2021-05-29 16:49:00             🧑  作者: Mango

此方法用于返回包装原始队列并且是线程安全的新Queue。此方法返回的包装器在执行操作之前将队列锁定,以便以线程安全的方式执行该包装。

句法:

返回值:同步的队列包装器(线程安全)。

异常:如果队列为null,则此方法将提供ArgumentNullException。

下面的程序说明了上面讨论的方法的使用:

范例1:

// C# code to illustrate the
// Queue.Synchronized() Method
using System;
using System.Collections;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating a Queue
        Queue myQueue = new Queue();
  
        // Inserting the elements into the Queue
        myQueue.Enqueue("C");
        myQueue.Enqueue("C++");
        myQueue.Enqueue("Java");
        myQueue.Enqueue("C#");
        myQueue.Enqueue("HTML");
        myQueue.Enqueue("CSS");
  
        // Creates a synchronized
        // wrapper around the Queue
        Queue sq = Queue.Synchronized(myQueue);
  
        // Displays the synchronization
        // status of both ArrayList
        Console.WriteLine("myQueue is {0}.", myQueue.IsSynchronized ?
                                "Synchronized" : "Not Synchronized");
  
        Console.WriteLine("sq is {0}.", sq.IsSynchronized ? 
                      "Synchronized" : "Not Synchronized");
    }
}

输出:

myQueue is Not Synchronized.
sq is Synchronized.

范例2:

// C# code to illustrate the
// Queue.Synchronized() Method
using System;
using System.Collections;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating a Queue
        Queue myQueue = new Queue();
  
        // Inserting the elements into the Queue
        myQueue.Enqueue("Geeks");
        myQueue.Enqueue("for");
        myQueue.Enqueue("Geeks");
        myQueue.Enqueue("Noida");
        myQueue.Enqueue("Sector");
        myQueue.Enqueue("142");
  
        // it will give error as
        // the parameter is null
        Queue smyList = Queue.Synchronized(null);
    }
}

运行时错误:

参考:

  • https://docs.microsoft.com/zh-cn/dotnet/api/system.collections.queue.synchronized?view=netframework-4.7.2