示例#1
0
 private void OnTaskCompleted()
 {
     if (Interlocked.Decrement(ref RemainedParallelTasks) == 0)
     {
         try
         {
             WaitForRemainedParallelTasks.Set();
         }
         catch (Exception) { }
     }
 }
示例#2
0
        public void Dispose()
        {
            GrantRandomAccess();

            BTaskWrapper.Run(() =>
            {
                WriteToStream(FileTypeStreamMap[ENodeType.Hierarchy], HierarchySortedQueue);
                Writing = false;
                if (Interlocked.Decrement(ref Remaining) == 0)
                {
                    try
                    {
                        WaitFor.Set();
                    }
                    catch (Exception)
                    {
                    }
                }
            });


            try
            {
                WaitFor.WaitOne();
                WaitFor.Close();
                FileTypeStreamMap[ENodeType.Hierarchy].IOStream.Flush();
                FileTypeStreamMap[ENodeType.Metadata].IOStream.Flush();
                FileTypeStreamMap[ENodeType.Geometry].IOStream.Flush();

                FileTypeStreamMap[ENodeType.Hierarchy].IOStream.Close();
                FileTypeStreamMap[ENodeType.Metadata].IOStream.Close();
                FileTypeStreamMap[ENodeType.Geometry].IOStream.Close();
            }
            catch (Exception) { }

            try
            {
                WaitForRemainedParallelTasks.Close();
            }
            catch (Exception) { }
        }