コード例 #1
0
ファイル: VirtualFileSystem.cs プロジェクト: nistck/Jx
        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;
            }
        }
コード例 #2
0
ファイル: VirtualFileSystem.cs プロジェクト: nistck/Jx
        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);
        }