private static void PreloadFileToMemory(object obj) { PreloadFileToMemoryItem preloadFileToMemoryItem = (PreloadFileToMemoryItem)obj; try { using (VirtualFileStream virtualFileStream = VirtualFile.Open(preloadFileToMemoryItem.Path)) { byte[] bytesBuf = new byte[virtualFileStream.Length]; if (virtualFileStream.Read(bytesBuf, 0, bytesBuf.Length) != bytesBuf.Length) { throw new Exception("Unable to load all data."); } preloadFileToMemoryItem.data = bytesBuf; preloadFileToMemoryItem.loaded = true; } } catch (Exception ex) { preloadFileToMemoryItem.error = ex.Message; } }
public static PreloadFileToMemoryItem PreloadFileToMemoryFromBackgroundThread(string path) { PreloadFileToMemoryItem result; lock (syncVFS) { string key = path.ToLower(); PreloadFileToMemoryItem preloadFileToMemoryItem; if (preloadItems.TryGetValue(key, out preloadFileToMemoryItem)) { result = preloadFileToMemoryItem; } else { preloadFileToMemoryItem = new PreloadFileToMemoryItem(); preloadFileToMemoryItem.path = path; preloadItems.Add(key, preloadFileToMemoryItem); Task task = new Task(new Action <object>(PreloadFileToMemory), preloadFileToMemoryItem); task.Start(); result = preloadFileToMemoryItem; } } return(result); }