Array.SyncRoot Property

来源:互联网 发布:配音软件包租婆 编辑:程序博客网 时间:2024/06/11 10:45

 

Syntax:

SyncRoot

This property returns a synchronization object for the current array. Arrays are not inherently thread-safe. Synchronize access to the array with the synchronization object.

 

virtual object SyncRoot{    get;}

 

 

Example:

Accesses to arrays are easily synchronized with the lock statement, where the SyncRoot object is the parameter.

using System;
using System.Collections.Generic;
using System.Threading;

public class MyClass
{
    
public static void Main()
    {
        Array.Sort(zArray);
        Thread t1
=new Thread(
            
new ThreadStart(DisplayForward));
        Thread t2
=new Thread(
                
new ThreadStart(DisplayReverse));
        t1.Start();
        t2.Start();

        RL();
    }
    
private static int [] zArray={1,5,4,2,4,2,9,10};
        
public static void DisplayForward() {
            
lock(zArray.SyncRoot) {
                Console.Write(
" Forward: ");
                
foreach(int number in zArray) {
                    Console.Write(number
+" ");
                }
            }
        }

        
public static void DisplayReverse() {
            
lock(zArray.SyncRoot) {
                Array.Reverse(zArray);
                Console.Write(
" Reverse: ");
                
foreach(int number in zArray) {
                    Console.Write(number
+" ");
                }
                Array.Reverse(zArray);
            }
        }

    
#region Helper methods

    
private static void WL(object text, params object[] args)
    {
        Console.WriteLine(text.ToString(), args);    
    }
    
    
private static void RL()
    {
        Console.ReadLine();    
    }
    
    
private static void Break() 
    {
        System.Diagnostics.Debugger.Break();
    }

    
#endregion
}

 

o(∩_∩)o...

原创粉丝点击