Int64KeyFrameCollection.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Core / CSharp / System / Windows / Media / Animation / Generated / Int64KeyFrameCollection.cs / 1 / Int64KeyFrameCollection.cs

                            //---------------------------------------------------------------------------- 
//
// 
//    Copyright (C) Microsoft Corporation.  All rights reserved.
//  
//
// This file was generated, please do not edit it directly. 
// 
// Please see http://wiki/default.aspx/Microsoft.Projects.Avalon/MilCodeGen.html for more information.
// 
//---------------------------------------------------------------------------

using MS.Internal;
 
using System;
using System.Collections; 
using System.Collections.Generic; 
using System.ComponentModel;
using System.Diagnostics; 
using System.Globalization;
using System.Windows.Media.Animation;
using System.Windows.Media.Media3D;
 
namespace System.Windows.Media.Animation
{ 
    ///  
    /// This collection is used in conjunction with a KeyFrameInt64Animation
    /// to animate a Int64 property value along a set of key frames. 
    /// 
    public class Int64KeyFrameCollection : Freezable, IList
    {
        #region Data 

        private List _keyFrames; 
        private static Int64KeyFrameCollection s_emptyCollection; 

        #endregion 

        #region Constructors

        ///  
        /// Creates a new Int64KeyFrameCollection.
        ///  
        public Int64KeyFrameCollection() 
            : base()
        { 
            _keyFrames = new List< Int64KeyFrame>(2);
        }

        #endregion 

        #region Static Methods 
 
        /// 
        /// An empty Int64KeyFrameCollection. 
        /// 
        public static Int64KeyFrameCollection Empty
        {
            get 
            {
                if (s_emptyCollection == null) 
                { 
                    Int64KeyFrameCollection emptyCollection = new Int64KeyFrameCollection();
 
                    emptyCollection._keyFrames = new List< Int64KeyFrame>(0);
                    emptyCollection.Freeze();

                    s_emptyCollection = emptyCollection; 
                }
 
                return s_emptyCollection; 
            }
        } 

        #endregion

        #region Freezable 

        ///  
        /// Creates a freezable copy of this Int64KeyFrameCollection. 
        /// 
        /// The copy 
        public new Int64KeyFrameCollection Clone()
        {
            return (Int64KeyFrameCollection)base.Clone();
        } 

        ///  
        /// Implementation of Freezable.CreateInstanceCore. 
        /// 
        /// The new Freezable. 
        protected override Freezable CreateInstanceCore()
        {
            return new Int64KeyFrameCollection();
        } 

        ///  
        /// Implementation of Freezable.CloneCore. 
        /// 
        protected override void CloneCore(Freezable sourceFreezable) 
        {
            Int64KeyFrameCollection sourceCollection = (Int64KeyFrameCollection) sourceFreezable;
            base.CloneCore(sourceFreezable);
 
            int count = sourceCollection._keyFrames.Count;
 
            _keyFrames = new List< Int64KeyFrame>(count); 

            for (int i = 0; i < count; i++) 
            {
                Int64KeyFrame keyFrame = (Int64KeyFrame)sourceCollection._keyFrames[i].Clone();
                _keyFrames.Add(keyFrame);
                OnFreezablePropertyChanged(null, keyFrame); 
            }
        } 
 

        ///  
        /// Implementation of Freezable.CloneCurrentValueCore.
        /// 
        protected override void CloneCurrentValueCore(Freezable sourceFreezable)
        { 
            Int64KeyFrameCollection sourceCollection = (Int64KeyFrameCollection) sourceFreezable;
            base.CloneCurrentValueCore(sourceFreezable); 
 
            int count = sourceCollection._keyFrames.Count;
 
            _keyFrames = new List< Int64KeyFrame>(count);

            for (int i = 0; i < count; i++)
            { 
                Int64KeyFrame keyFrame = (Int64KeyFrame)sourceCollection._keyFrames[i].CloneCurrentValue();
                _keyFrames.Add(keyFrame); 
                OnFreezablePropertyChanged(null, keyFrame); 
            }
        } 


        /// 
        /// Implementation of Freezable.GetAsFrozenCore. 
        /// 
        protected override void GetAsFrozenCore(Freezable sourceFreezable) 
        { 
            Int64KeyFrameCollection sourceCollection = (Int64KeyFrameCollection) sourceFreezable;
            base.GetAsFrozenCore(sourceFreezable); 

            int count = sourceCollection._keyFrames.Count;

            _keyFrames = new List< Int64KeyFrame>(count); 

            for (int i = 0; i < count; i++) 
            { 
                Int64KeyFrame keyFrame = (Int64KeyFrame)sourceCollection._keyFrames[i].GetAsFrozen();
                _keyFrames.Add(keyFrame); 
                OnFreezablePropertyChanged(null, keyFrame);
            }
        }
 

        ///  
        /// Implementation of Freezable.GetCurrentValueAsFrozenCore. 
        /// 
        protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable) 
        {
            Int64KeyFrameCollection sourceCollection = (Int64KeyFrameCollection) sourceFreezable;
            base.GetCurrentValueAsFrozenCore(sourceFreezable);
 
            int count = sourceCollection._keyFrames.Count;
 
            _keyFrames = new List< Int64KeyFrame>(count); 

            for (int i = 0; i < count; i++) 
            {
                Int64KeyFrame keyFrame = (Int64KeyFrame)sourceCollection._keyFrames[i].GetCurrentValueAsFrozen();
                _keyFrames.Add(keyFrame);
                OnFreezablePropertyChanged(null, keyFrame); 
            }
        } 
 
        /// 
        /// 
        /// 
        protected override bool FreezeCore(bool isChecking)
        {
            bool canFreeze = base.FreezeCore(isChecking); 

            for (int i = 0; i < _keyFrames.Count && canFreeze; i++) 
            { 
                canFreeze &= Freezable.Freeze(_keyFrames[i], isChecking);
            } 

            return canFreeze;
        }
 
        #endregion
 
        #region IEnumerable 

        ///  
        /// Returns an enumerator of the Int64KeyFrames in the collection.
        /// 
        public IEnumerator GetEnumerator()
        { 
            ReadPreamble();
 
            return _keyFrames.GetEnumerator(); 
        }
 
        #endregion

        #region ICollection
 
        /// 
        /// Returns the number of Int64KeyFrames in the collection. 
        ///  
        public int Count
        { 
            get
            {
                ReadPreamble();
 
                return _keyFrames.Count;
            } 
        } 

        ///  
        /// See ICollection.IsSynchronized.
        /// 
        public bool IsSynchronized
        { 
            get
            { 
                ReadPreamble(); 

                return (IsFrozen || Dispatcher != null); 
            }
        }

        ///  
        /// See ICollection.SyncRoot.
        ///  
        public object SyncRoot 
        {
            get 
            {
                ReadPreamble();

                return ((ICollection)_keyFrames).SyncRoot; 
            }
        } 
 
        /// 
        /// Copies all of the Int64KeyFrames in the collection to an 
        /// array.
        /// 
        void ICollection.CopyTo(Array array, int index)
        { 
            ReadPreamble();
 
            ((ICollection)_keyFrames).CopyTo(array, index); 
        }
 
        /// 
        /// Copies all of the Int64KeyFrames in the collection to an
        /// array of Int64KeyFrames.
        ///  
        public void CopyTo(Int64KeyFrame[] array, int index)
        { 
            ReadPreamble(); 

            _keyFrames.CopyTo(array, index); 
        }

        #endregion
 
        #region IList
 
        ///  
        /// Adds a Int64KeyFrame to the collection.
        ///  
        int IList.Add(object keyFrame)
        {
            return Add((Int64KeyFrame)keyFrame);
        } 

        ///  
        /// Adds a Int64KeyFrame to the collection. 
        /// 
        public int Add(Int64KeyFrame keyFrame) 
        {
            if (keyFrame == null)
            {
                throw new ArgumentNullException("keyFrame"); 
            }
 
            WritePreamble(); 

            OnFreezablePropertyChanged(null, keyFrame); 
            _keyFrames.Add(keyFrame);

            WritePostscript();
 
            return _keyFrames.Count - 1;
        } 
 
        /// 
        /// Removes all Int64KeyFrames from the collection. 
        /// 
        public void Clear()
        {
            WritePreamble(); 

            if (_keyFrames.Count > 0) 
            { 
                for (int i = 0; i < _keyFrames.Count; i++)
                { 
                    OnFreezablePropertyChanged(_keyFrames[i], null);
                }

                _keyFrames.Clear(); 

                WritePostscript(); 
            } 
        }
 
        /// 
        /// Returns true of the collection contains the given Int64KeyFrame.
        /// 
        bool IList.Contains(object keyFrame) 
        {
            return Contains((Int64KeyFrame)keyFrame); 
        } 

        ///  
        /// Returns true of the collection contains the given Int64KeyFrame.
        /// 
        public bool Contains(Int64KeyFrame keyFrame)
        { 
            ReadPreamble();
 
            return _keyFrames.Contains(keyFrame); 
        }
 
        /// 
        /// Returns the index of a given Int64KeyFrame in the collection.
        /// 
        int IList.IndexOf(object keyFrame) 
        {
            return IndexOf((Int64KeyFrame)keyFrame); 
        } 

        ///  
        /// Returns the index of a given Int64KeyFrame in the collection.
        /// 
        public int IndexOf(Int64KeyFrame keyFrame)
        { 
            ReadPreamble();
 
            return _keyFrames.IndexOf(keyFrame); 
        }
 
        /// 
        /// Inserts a Int64KeyFrame into a specific location in the collection.
        /// 
        void IList.Insert(int index, object keyFrame) 
        {
            Insert(index, (Int64KeyFrame)keyFrame); 
        } 

        ///  
        /// Inserts a Int64KeyFrame into a specific location in the collection.
        /// 
        public void Insert(int index, Int64KeyFrame keyFrame)
        { 
            if (keyFrame == null)
            { 
                throw new ArgumentNullException("keyFrame"); 
            }
 
            WritePreamble();

            OnFreezablePropertyChanged(null, keyFrame);
            _keyFrames.Insert(index, keyFrame); 

            WritePostscript(); 
        } 

        ///  
        /// Returns true if the collection is frozen.
        /// 
        public bool IsFixedSize
        { 
            get
            { 
                ReadPreamble(); 

                return IsFrozen; 
            }
        }

        ///  
        /// Returns true if the collection is frozen.
        ///  
        public bool IsReadOnly 
        {
            get 
            {
                ReadPreamble();

                return IsFrozen; 
            }
        } 
 
        /// 
        /// Removes a Int64KeyFrame from the collection. 
        /// 
        void IList.Remove(object keyFrame)
        {
            Remove((Int64KeyFrame)keyFrame); 
        }
 
        ///  
        /// Removes a Int64KeyFrame from the collection.
        ///  
        public void Remove(Int64KeyFrame keyFrame)
        {
            WritePreamble();
 
            if (_keyFrames.Contains(keyFrame))
            { 
                OnFreezablePropertyChanged(keyFrame, null); 
                _keyFrames.Remove(keyFrame);
 
                WritePostscript();
            }
        }
 
        /// 
        /// Removes the Int64KeyFrame at the specified index from the collection. 
        ///  
        public void RemoveAt(int index)
        { 
            WritePreamble();

            OnFreezablePropertyChanged(_keyFrames[index], null);
            _keyFrames.RemoveAt(index); 

            WritePostscript(); 
        } 

        ///  
        /// Gets or sets the Int64KeyFrame at a given index.
        /// 
        object IList.this[int index]
        { 
            get
            { 
                return this[index]; 
            }
            set 
            {
                this[index] = (Int64KeyFrame)value;
            }
        } 

        ///  
        /// Gets or sets the Int64KeyFrame at a given index. 
        /// 
        public Int64KeyFrame this[int index] 
        {
            get
            {
                ReadPreamble(); 

                return _keyFrames[index]; 
            } 
            set
            { 
                if (value == null)
                {
                    throw new ArgumentNullException(String.Format(CultureInfo.InvariantCulture, "Int64KeyFrameCollection[{0}]", index));
                } 

                WritePreamble(); 
 
                if (value != _keyFrames[index])
                { 
                    OnFreezablePropertyChanged(_keyFrames[index], value);
                    _keyFrames[index] = value;

                    Debug.Assert(_keyFrames[index] != null); 

                    WritePostscript(); 
                } 
            }
        } 

        #endregion
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//---------------------------------------------------------------------------- 
//
// 
//    Copyright (C) Microsoft Corporation.  All rights reserved.
//  
//
// This file was generated, please do not edit it directly. 
// 
// Please see http://wiki/default.aspx/Microsoft.Projects.Avalon/MilCodeGen.html for more information.
// 
//---------------------------------------------------------------------------

using MS.Internal;
 
using System;
using System.Collections; 
using System.Collections.Generic; 
using System.ComponentModel;
using System.Diagnostics; 
using System.Globalization;
using System.Windows.Media.Animation;
using System.Windows.Media.Media3D;
 
namespace System.Windows.Media.Animation
{ 
    ///  
    /// This collection is used in conjunction with a KeyFrameInt64Animation
    /// to animate a Int64 property value along a set of key frames. 
    /// 
    public class Int64KeyFrameCollection : Freezable, IList
    {
        #region Data 

        private List _keyFrames; 
        private static Int64KeyFrameCollection s_emptyCollection; 

        #endregion 

        #region Constructors

        ///  
        /// Creates a new Int64KeyFrameCollection.
        ///  
        public Int64KeyFrameCollection() 
            : base()
        { 
            _keyFrames = new List< Int64KeyFrame>(2);
        }

        #endregion 

        #region Static Methods 
 
        /// 
        /// An empty Int64KeyFrameCollection. 
        /// 
        public static Int64KeyFrameCollection Empty
        {
            get 
            {
                if (s_emptyCollection == null) 
                { 
                    Int64KeyFrameCollection emptyCollection = new Int64KeyFrameCollection();
 
                    emptyCollection._keyFrames = new List< Int64KeyFrame>(0);
                    emptyCollection.Freeze();

                    s_emptyCollection = emptyCollection; 
                }
 
                return s_emptyCollection; 
            }
        } 

        #endregion

        #region Freezable 

        ///  
        /// Creates a freezable copy of this Int64KeyFrameCollection. 
        /// 
        /// The copy 
        public new Int64KeyFrameCollection Clone()
        {
            return (Int64KeyFrameCollection)base.Clone();
        } 

        ///  
        /// Implementation of Freezable.CreateInstanceCore. 
        /// 
        /// The new Freezable. 
        protected override Freezable CreateInstanceCore()
        {
            return new Int64KeyFrameCollection();
        } 

        ///  
        /// Implementation of Freezable.CloneCore. 
        /// 
        protected override void CloneCore(Freezable sourceFreezable) 
        {
            Int64KeyFrameCollection sourceCollection = (Int64KeyFrameCollection) sourceFreezable;
            base.CloneCore(sourceFreezable);
 
            int count = sourceCollection._keyFrames.Count;
 
            _keyFrames = new List< Int64KeyFrame>(count); 

            for (int i = 0; i < count; i++) 
            {
                Int64KeyFrame keyFrame = (Int64KeyFrame)sourceCollection._keyFrames[i].Clone();
                _keyFrames.Add(keyFrame);
                OnFreezablePropertyChanged(null, keyFrame); 
            }
        } 
 

        ///  
        /// Implementation of Freezable.CloneCurrentValueCore.
        /// 
        protected override void CloneCurrentValueCore(Freezable sourceFreezable)
        { 
            Int64KeyFrameCollection sourceCollection = (Int64KeyFrameCollection) sourceFreezable;
            base.CloneCurrentValueCore(sourceFreezable); 
 
            int count = sourceCollection._keyFrames.Count;
 
            _keyFrames = new List< Int64KeyFrame>(count);

            for (int i = 0; i < count; i++)
            { 
                Int64KeyFrame keyFrame = (Int64KeyFrame)sourceCollection._keyFrames[i].CloneCurrentValue();
                _keyFrames.Add(keyFrame); 
                OnFreezablePropertyChanged(null, keyFrame); 
            }
        } 


        /// 
        /// Implementation of Freezable.GetAsFrozenCore. 
        /// 
        protected override void GetAsFrozenCore(Freezable sourceFreezable) 
        { 
            Int64KeyFrameCollection sourceCollection = (Int64KeyFrameCollection) sourceFreezable;
            base.GetAsFrozenCore(sourceFreezable); 

            int count = sourceCollection._keyFrames.Count;

            _keyFrames = new List< Int64KeyFrame>(count); 

            for (int i = 0; i < count; i++) 
            { 
                Int64KeyFrame keyFrame = (Int64KeyFrame)sourceCollection._keyFrames[i].GetAsFrozen();
                _keyFrames.Add(keyFrame); 
                OnFreezablePropertyChanged(null, keyFrame);
            }
        }
 

        ///  
        /// Implementation of Freezable.GetCurrentValueAsFrozenCore. 
        /// 
        protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable) 
        {
            Int64KeyFrameCollection sourceCollection = (Int64KeyFrameCollection) sourceFreezable;
            base.GetCurrentValueAsFrozenCore(sourceFreezable);
 
            int count = sourceCollection._keyFrames.Count;
 
            _keyFrames = new List< Int64KeyFrame>(count); 

            for (int i = 0; i < count; i++) 
            {
                Int64KeyFrame keyFrame = (Int64KeyFrame)sourceCollection._keyFrames[i].GetCurrentValueAsFrozen();
                _keyFrames.Add(keyFrame);
                OnFreezablePropertyChanged(null, keyFrame); 
            }
        } 
 
        /// 
        /// 
        /// 
        protected override bool FreezeCore(bool isChecking)
        {
            bool canFreeze = base.FreezeCore(isChecking); 

            for (int i = 0; i < _keyFrames.Count && canFreeze; i++) 
            { 
                canFreeze &= Freezable.Freeze(_keyFrames[i], isChecking);
            } 

            return canFreeze;
        }
 
        #endregion
 
        #region IEnumerable 

        ///  
        /// Returns an enumerator of the Int64KeyFrames in the collection.
        /// 
        public IEnumerator GetEnumerator()
        { 
            ReadPreamble();
 
            return _keyFrames.GetEnumerator(); 
        }
 
        #endregion

        #region ICollection
 
        /// 
        /// Returns the number of Int64KeyFrames in the collection. 
        ///  
        public int Count
        { 
            get
            {
                ReadPreamble();
 
                return _keyFrames.Count;
            } 
        } 

        ///  
        /// See ICollection.IsSynchronized.
        /// 
        public bool IsSynchronized
        { 
            get
            { 
                ReadPreamble(); 

                return (IsFrozen || Dispatcher != null); 
            }
        }

        ///  
        /// See ICollection.SyncRoot.
        ///  
        public object SyncRoot 
        {
            get 
            {
                ReadPreamble();

                return ((ICollection)_keyFrames).SyncRoot; 
            }
        } 
 
        /// 
        /// Copies all of the Int64KeyFrames in the collection to an 
        /// array.
        /// 
        void ICollection.CopyTo(Array array, int index)
        { 
            ReadPreamble();
 
            ((ICollection)_keyFrames).CopyTo(array, index); 
        }
 
        /// 
        /// Copies all of the Int64KeyFrames in the collection to an
        /// array of Int64KeyFrames.
        ///  
        public void CopyTo(Int64KeyFrame[] array, int index)
        { 
            ReadPreamble(); 

            _keyFrames.CopyTo(array, index); 
        }

        #endregion
 
        #region IList
 
        ///  
        /// Adds a Int64KeyFrame to the collection.
        ///  
        int IList.Add(object keyFrame)
        {
            return Add((Int64KeyFrame)keyFrame);
        } 

        ///  
        /// Adds a Int64KeyFrame to the collection. 
        /// 
        public int Add(Int64KeyFrame keyFrame) 
        {
            if (keyFrame == null)
            {
                throw new ArgumentNullException("keyFrame"); 
            }
 
            WritePreamble(); 

            OnFreezablePropertyChanged(null, keyFrame); 
            _keyFrames.Add(keyFrame);

            WritePostscript();
 
            return _keyFrames.Count - 1;
        } 
 
        /// 
        /// Removes all Int64KeyFrames from the collection. 
        /// 
        public void Clear()
        {
            WritePreamble(); 

            if (_keyFrames.Count > 0) 
            { 
                for (int i = 0; i < _keyFrames.Count; i++)
                { 
                    OnFreezablePropertyChanged(_keyFrames[i], null);
                }

                _keyFrames.Clear(); 

                WritePostscript(); 
            } 
        }
 
        /// 
        /// Returns true of the collection contains the given Int64KeyFrame.
        /// 
        bool IList.Contains(object keyFrame) 
        {
            return Contains((Int64KeyFrame)keyFrame); 
        } 

        ///  
        /// Returns true of the collection contains the given Int64KeyFrame.
        /// 
        public bool Contains(Int64KeyFrame keyFrame)
        { 
            ReadPreamble();
 
            return _keyFrames.Contains(keyFrame); 
        }
 
        /// 
        /// Returns the index of a given Int64KeyFrame in the collection.
        /// 
        int IList.IndexOf(object keyFrame) 
        {
            return IndexOf((Int64KeyFrame)keyFrame); 
        } 

        ///  
        /// Returns the index of a given Int64KeyFrame in the collection.
        /// 
        public int IndexOf(Int64KeyFrame keyFrame)
        { 
            ReadPreamble();
 
            return _keyFrames.IndexOf(keyFrame); 
        }
 
        /// 
        /// Inserts a Int64KeyFrame into a specific location in the collection.
        /// 
        void IList.Insert(int index, object keyFrame) 
        {
            Insert(index, (Int64KeyFrame)keyFrame); 
        } 

        ///  
        /// Inserts a Int64KeyFrame into a specific location in the collection.
        /// 
        public void Insert(int index, Int64KeyFrame keyFrame)
        { 
            if (keyFrame == null)
            { 
                throw new ArgumentNullException("keyFrame"); 
            }
 
            WritePreamble();

            OnFreezablePropertyChanged(null, keyFrame);
            _keyFrames.Insert(index, keyFrame); 

            WritePostscript(); 
        } 

        ///  
        /// Returns true if the collection is frozen.
        /// 
        public bool IsFixedSize
        { 
            get
            { 
                ReadPreamble(); 

                return IsFrozen; 
            }
        }

        ///  
        /// Returns true if the collection is frozen.
        ///  
        public bool IsReadOnly 
        {
            get 
            {
                ReadPreamble();

                return IsFrozen; 
            }
        } 
 
        /// 
        /// Removes a Int64KeyFrame from the collection. 
        /// 
        void IList.Remove(object keyFrame)
        {
            Remove((Int64KeyFrame)keyFrame); 
        }
 
        ///  
        /// Removes a Int64KeyFrame from the collection.
        ///  
        public void Remove(Int64KeyFrame keyFrame)
        {
            WritePreamble();
 
            if (_keyFrames.Contains(keyFrame))
            { 
                OnFreezablePropertyChanged(keyFrame, null); 
                _keyFrames.Remove(keyFrame);
 
                WritePostscript();
            }
        }
 
        /// 
        /// Removes the Int64KeyFrame at the specified index from the collection. 
        ///  
        public void RemoveAt(int index)
        { 
            WritePreamble();

            OnFreezablePropertyChanged(_keyFrames[index], null);
            _keyFrames.RemoveAt(index); 

            WritePostscript(); 
        } 

        ///  
        /// Gets or sets the Int64KeyFrame at a given index.
        /// 
        object IList.this[int index]
        { 
            get
            { 
                return this[index]; 
            }
            set 
            {
                this[index] = (Int64KeyFrame)value;
            }
        } 

        ///  
        /// Gets or sets the Int64KeyFrame at a given index. 
        /// 
        public Int64KeyFrame this[int index] 
        {
            get
            {
                ReadPreamble(); 

                return _keyFrames[index]; 
            } 
            set
            { 
                if (value == null)
                {
                    throw new ArgumentNullException(String.Format(CultureInfo.InvariantCulture, "Int64KeyFrameCollection[{0}]", index));
                } 

                WritePreamble(); 
 
                if (value != _keyFrames[index])
                { 
                    OnFreezablePropertyChanged(_keyFrames[index], value);
                    _keyFrames[index] = value;

                    Debug.Assert(_keyFrames[index] != null); 

                    WritePostscript(); 
                } 
            }
        } 

        #endregion
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK