/// <summary>
    /// 开始异步更新持久化数据文件
    /// </summary>
    public void UpdatePersistentFilesAsync(string sourcePath)
    {
        if (_deletedcount > 0)
        {
            //先删除已经丢弃的文件
            foreach (var item in _deletedFiles)
            {
                if (File.Exists(PersistentBase + item.FullPath))
                {
                    File.Delete(PersistentBase + item.FullPath);
                }
            }
        }

        if (ModifiedFiles > 0)
        {
            foreach (var md5filedata in _latestFiles)
            {
                DebugConsole.Info("Begin update [" + md5filedata.FullPath + "] !");
                FileReader reader = FileReader.CreateReader(sourcePath, md5filedata.FullPath, FileReader.FileType.REMOTE);
                reader.OnReadCompleted = (rd) =>
                {
                    FileWriter writer = new PersistentFileWriter(rd.ByteData, PersistentBase + rd.FilePath);
                    writer.OnWriteCompleted = OnWirteComplete;
                    writer.WriteAsync();
                };
                reader.ReadAsync();
            }
        }
        else
        {
            UpdateCompleted = true;
        }
    }
示例#2
0
    void On_Write_Callback(IAsyncResult iar)
    {
        PersistentFileWriter pfw = iar.AsyncState as PersistentFileWriter;

        try
        {
            pfw.WriteStream.EndWrite(iar);
            if (iar.IsCompleted)
            {
                pfw.WriteStream.Flush();
                this.OnCompleted();
            }
        }
        catch (Exception e)
        {
            this.OnError(e.Message);
        }
        finally
        {
            pfw.WriteStream.Close();
            pfw.WriteStream.Dispose();
            pfw.WriteStream = null;
        }
    }