public override MelDBLoadRequest LoadIndexAsync() { var request = new MelDBLoadRequest(); coroutineHolder.StartCoroutine(LoadIndexInner(request)); return(request); }
private IEnumerator LoadIndexInner(MelDBLoadRequest request) { var assetRequest = Resources.LoadAsync <TextAsset>(IndexFilename); while (!assetRequest.isDone) { yield return(null); } var dataAsset = assetRequest.asset as TextAsset; if (dataAsset == null) { throw new Exception("Failed to load from Resources: " + IndexFilename); } var bytes = dataAsset.bytes; lock (_initLock) { var thread = new System.Threading.Thread(() => { request.result = LoadIndexFromBytes(bytes); request.isDone = request.result != null; }); thread.IsBackground = true; thread.Start(); } }
public override MelDBLoadRequest LoadIndexAsync() { lock (_initLock) { var indexPath = GetIndexPath(); if (!File.Exists(indexPath)) { throw new Exception("file was not found: " + indexPath); } var request = new MelDBLoadRequest(); var thread = new System.Threading.Thread(() => { XmlSerializer serializer = new XmlSerializer(typeof(MelDB)); var reader = new FileStream(indexPath, FileMode.Open); var db = serializer.Deserialize(reader) as MelDB; reader.Dispose(); request.result = db; request.isDone = true; }); thread.IsBackground = true; thread.Start(); return(request); } }