Queue.IsSynchronized 屬性

定義

取得值,這個值表示對 Queue 的存取是否同步 (安全執行緒)。

public virtual bool IsSynchronized { get; }

屬性值

如果 true 的存取為同步 (安全執行緒),則為 Queue,否則為 false。 預設為 false

實作

範例

下列程式代碼範例示範如何在整個列舉期間使用 SyncRoot 鎖定集合。 擷取此屬性的值是作業 O(1)

Queue myCollection = new Queue();
lock (myCollection.SyncRoot)
{
    foreach (object item in myCollection)
    {
        // Insert your code here.
    }
}

下列範例示範如何同步處理 Queue、判斷 是否已 Queue 同步處理 ,以及使用已同步處理的 Queue

using System;
using System.Collections;

public class SamplesQueue
{
    public static void Main()
    {
        // Creates and initializes a new Queue.
        Queue myQ = new Queue();
        myQ.Enqueue("The");
        myQ.Enqueue("quick");
        myQ.Enqueue("brown");
        myQ.Enqueue("fox");

        // Creates a synchronized wrapper around the Queue.
        Queue mySyncdQ = Queue.Synchronized(myQ);

        // Displays the sychronization status of both Queues.
        Console.WriteLine("myQ is {0}.", myQ.IsSynchronized ? "synchronized" : "not synchronized");
        Console.WriteLine("mySyncdQ is {0}.", mySyncdQ.IsSynchronized ? "synchronized" : "not synchronized");
    }
}
/*
This code produces the following output.

myQ is not synchronized.
mySyncdQ is synchronized.
*/

備註

若要保證的 Queue線程安全性,所有作業都必須透過 方法傳 Synchronized 回的包裝函式來完成。

透過集合進行列舉在本質上並非安全執行緒程序。 即使集合經過同步化,其他的執行緒仍可修改該集合,使列舉值擲回例外狀況。 若要保證列舉過程的執行緒安全,您可以在整個列舉過程中鎖定集合,或攔截由其他執行緒的變更所造成的例外狀況。

適用於

另請參閱