private void ReadComplete() { for (int i = 0; i < Length; i++) { if (!ReadHandles[i].IsValid()) { continue; } ReadHandles[i].JobHandle.Complete(); ReadHandles[i].Dispose(); if (IsUtf16) { FilesPtr[0][i] = TextFile.FromRawTextFileUtf16(RawFiles[i], allocator); DeleteCommentJobHandles[i] = DeleteCommentJob.Schedule(FilesPtr[0] + i, IsDebug); } else { FilesPtr[0][i] = TextFile.FromRawTextFileCp932(RawFiles[i], allocator); DeleteCommentJobHandles[i] = DeleteCommentJob.Schedule(FilesPtr[0] + i, IsDebug); } } _currentStage = Stage.DeleteCommentAsync; }
private void ReadAsyncUpdate() { bool isAnyRunning = false; for (int i = 0; i < Length; i++) { if (!ReadHandles[i].IsValid()) { continue; } switch (ReadHandles[i].Status) { case ReadStatus.Complete: ReadHandles[i].Dispose(); if (IsUtf16) { FilesPtr[0][i] = TextFile.FromRawTextFileUtf16(RawFiles[i], allocator); DeleteCommentJobHandles[i] = DeleteCommentJob.Schedule(FilesPtr[0] + i, IsDebug); } else { FilesPtr[0][i] = TextFile.FromRawTextFileCp932(RawFiles[i], allocator); DeleteCommentJobHandles[i] = DeleteCommentJob.Schedule(FilesPtr[0] + i, IsDebug); } break; case ReadStatus.Failed: ReadHandles[i].Dispose(); break; case ReadStatus.InProgress: isAnyRunning = true; break; } } if (isAnyRunning) { return; } _currentStage = Stage.DeleteCommentAsync; if (RawFiles != null) { if (IsUtf16) { UnsafeUtility.Free(RawFiles, allocator); } else { for (int i = 0; i < Length; i++) { RawFiles[i].Dispose(); } UnsafeUtility.Free(RawFiles, allocator); } RawFiles = null; } if (ReadHandles != null) { UnsafeUtility.Free(ReadHandles, allocator); ReadHandles = null; } if (ReadCommands != null) { UnsafeUtility.Free(ReadCommands, allocator); ReadCommands = null; } }