首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ghostscript.NET多线程问题

Ghostscript.NET多线程问题
EN

Stack Overflow用户
提问于 2014-11-13 19:58:58
回答 1查看 2.8K关注 0票数 2

我们每月运行的过程中最长的部分是自动切片和将一些PDF转换成图像。每个PDF被读取,转换成3个不同的PDF,而这3个被转换成图像,放置在电子邮件中给客户。该PDF是独特的每个客户,我们发送一个每月PDF至少15,000 (经常更像22k)客户。

我们的PDF生成和切片已经是多线程的,但是我一直在研究并行化它的其余部分。

为此,我已经将我们的流程转换为使用Ghostscript.NET,它声称是一个支持并行Ghostscript的库。

为此,我将这段代码包装在一个Parallel.Foreach()循环中,在该循环中,每一次迭代都在不同的初始PDF上工作:

GhostscriptVersionInfo gsVersionInfo = GhostscriptVersionInfo.GetLastInstalledVersion(GhostscriptLicense.GPL | GhostscriptLicense.AFPL, GhostscriptLicense.GPL); GhostscriptProcessor processor = null; try { //sArgs is an array of arguments for ghostscript processor = new GhostscriptProcessor(gsVersionInfo, true); processor.StartProcessing(sArgs, new ConsoleStdIO(true,false,true)); while (processor.IsRunning) { Thread.Sleep(100); } }

当我运行上述代码并强制Parallel.Foreach只使用一个线程(禁用并行化)时,它将像以前一样运行,并正确地生成所有文件。如果我使用5度并行化,它就会开始抛出错误。这些错误各不相同,但倾向于指示格式错误的PDF文件,这使我认为幽灵脚本处理器实际上不是threadsafe,它们正在相互执行输入。

如何正确地使用Ghostscript.NET在不同的文件上同时运行多个幽灵脚本实例?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-02 06:59:36

我正在使用Ghostscript.NET与多线程.上面共享的代码应该在Parallel.For循环中。是的,整个代码意味着从

代码语言:javascript
复制
GhostscriptVersionInfo gsVersionInfo = GhostscriptVersionInfo.GetLastInstalledVersion(GhostscriptLicense.GPL | GhostscriptLicense.AFPL, GhostscriptLicense.GPL);

直到最后,它应该能工作。正如上面提到的@KenS,每个多线程进程都应该使用不同的GhostscriptProcessor实例。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26917330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档