public CachedFileBufferManager(long maxSize, DelegateErrorMessage errorMessage)
        {
            _MaxMemorySize = (long)maxSize * 1024 * 1024;
            _BufferList    = new LinkedList <Buffer>();
            _AvaliableRam  = 2 * 1024 * 1024;

            ErrorMessage = errorMessage;

            _LoadRamCounterThread = new System.Threading.Thread(delegate()
            {
                try
                {
                    PerformanceCounter ramCounter = new PerformanceCounter("Memory", "Available MBytes");
                    lock (this)
                    {
                        _RamCounter   = ramCounter;
                        _AvaliableRam = _RamCounter.NextValue();
                    }
                }
                catch (Exception e)
                {
                    if (ErrorMessage != null)
                    {
                        ErrorMessage("Init PerformanceCounter fail in CachedFileBufferManager", e);
                    }
                }
            });

            _LoadRamCounterThread.IsBackground = true;

            _LoadRamCounterThread.Start();
        }
 static public void Init(int memorySize, DelegateErrorMessage errorMessage)
 {
     CachedFileBufMgr = new CachedFileBufferManager(memorySize, errorMessage);
 }