当前位置: 首页>>代码示例>>C#>>正文


C# Queue.TrimExcess方法代码示例

本文整理汇总了C#中System.Collections.Queue.TrimExcess方法的典型用法代码示例。如果您正苦于以下问题:C# Queue.TrimExcess方法的具体用法?C# Queue.TrimExcess怎么用?C# Queue.TrimExcess使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在System.Collections.Queue的用法示例。


在下文中一共展示了Queue.TrimExcess方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: OnSucceed

 private void OnSucceed(string url, byte[] raw, object userData)
 {
     switch (mPreStep)
     {
         case Step.HashmapHash:
             {
                 // 和本地的HashmapHash进行对比
                 mServerHash = new UTF8Encoding(false).GetString(raw);
                 string local_hashmaphash = GetLocalHashmapHash();
                 if (string.Equals(local_hashmaphash, mServerHash))
                 {
                     SendLocalMapToAssetManager();
                     Finish();
                 }
                 else
                     mStep = Step.Hashmap;
             }
             break;
         case Step.Hashmap:
             {
                 mServerFiles = new UTF8Encoding(false).GetString(raw);
                 string[] array = mServerFiles.Replace("\r\n", "\n").Split('\n');
                 mUpdateQueue = new Queue<string>(array.Length);// 筛选出待更新的项
                 mTotalUpdateSize = 0u;
                 for (int i = 0; i < array.Length; i++)
                 {
                     string line = array[i];
                     if (string.IsNullOrEmpty(line))
                         continue;
                     string[] cells = line.Split('|');
                     if (cells == null || cells.Length == 0)
                         continue;
                     string key = cells[0];
                     AssetCfg item = new AssetCfg(cells, GetLocalItemHash(key));
                     AssetManager.AddCfg(item);
                     if (item.needUpdate)
                     {
                         mUpdateQueue.Enqueue(key);
                         mTotalUpdateSize += item.size;
                     }
                 }
                 mUpdateQueue.TrimExcess();
                 // 选择Patch或更新
                 if (mUpdateQueue.Count == 0)
                 {
                     SendLocalMapToAssetManager();
                     mStep = Step.Patch;
                     onProgress(null, 1f);
                 }
                 else
                 {
                     mStep = Step.Update;
                     mUpdatedSize = 0u;
                     onProgress(null, 0f);
                 }
             }
             break;
         case Step.Update:
             {
                 // 写入到Raw中
                 string key = userData.ToString();
                 string rawPath = GetRawPath(key, true);
                 File.WriteAllBytes(rawPath, raw);
                 // 检查队列
                 if (mUpdateQueue.Count > 0)
                     mStep = Step.Update;
                 else
                     mStep = Step.Patch;
                 // 更新进度
                 AssetCfg item = AssetManager.GetCfg(key);
                 mUpdatedSize += item.size;
                 float percent = (mUpdatedSize * 1.0f / mTotalUpdateSize);
                 onProgress(key, percent);
             }
             break;
     }
 }
开发者ID:zeronely,项目名称:View,代码行数:77,代码来源:AssetUpdater.cs


注:本文中的System.Collections.Queue.TrimExcess方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。