internal async Task ExtractAsync(ZipFileSettings settings) { await Task.Run(() => { var watch = Stopwatch.StartNew(); var agent = new ImageAgent(); Parallel.ForEach <ImageSource>(settings.ImageSources, s => { s.ExtractedRootDirectory = Path.Combine(settings.WorkRootFolderPath, s.FileNameWithoutExtension); Directory.CreateDirectory(s.ExtractedRootDirectory); this.extractImageSourceAsync(s, agent); }); watch.Stop(); this.relayStation.AddLog($"展開完了!"); this.relayStation.AddLog($"総展開時間:{watch.ElapsedMilliseconds / 1000}[sec]"); }); }
//private async Task extractImageSourceAsync(ImageSource source, ImageAgent agent) private void extractImageSourceAsync(ImageSource source, ImageAgent agent) { //await Task.Run(async () => //{ using (var archive = ArchiveFactory.Open(source.Path.Value)) { var entries = archive.Entries.Where(e => SourceItem.IsTargetFile(e)); foreach (var e in entries) { var targetFolder = source.GetExtractedFolder(e.Key); e.WriteToDirectory(targetFolder.ItemPath); var extractedPath = this.getExtractedFilePath(e, targetFolder); targetFolder.Children.Add(new SourceItem(ImageFile.GetImageSpecification(extractedPath))); //targetFolder.Children.Add(new SourceItem(agent.GetImageSpecification(extractedPath))); //targetFolder.Children.Add(new SourceItem(await agent.GetImageSpecificationAsync(extractedPath))); } } //}); }
//+ //- @ProcessRequest -// public override void Process() { if (Themelia.Web.Http.GetUrlPart(Themelia.Position.Penultima) == "imagestore") { Byte[] buffer = HttpData.GetInputHttpByteArray(); String contentType = HttpData.GetHeaderItem(Info.ImageContentType); if (buffer != null && buffer.Length > 0 && !String.IsNullOrEmpty(contentType)) { String blogGuid = Themelia.Web.Http.GetUrlPart(Themelia.Position.Ultima); BlogImage blogImage = new BlogImage { ContentType = contentType, Data = buffer }; //+ try { Response.Write(ImageAgent.SaveImage(blogImage, blogGuid)); } catch { } } else { String blogImageGuid = Themelia.Web.Http.GetUrlPart(Themelia.Position.Ultima); if (!String.IsNullOrEmpty(blogImageGuid)) { BlogImage blogImage = ImageAgent.GetImage(blogImageGuid); if (blogImage.Data != null && blogImage.Data.Length > 0) { ContentType = blogImage.ContentType; Response.BinaryWrite(blogImage.Data); } } } } }