我们可以使用多线程将Microsoft Word文档转换为C#中的HTML吗?

我们可以使用多线程将Microsoft Word文档转换为C#中的HTML吗?,c#,multithreading,ms-word,C#,Multithreading,Ms Word,我有一个Windows服务,它可以轮询数据库中任何类型为doc、docx、pdf和rtf的上传文档,并将它们转换为HTML并保存到本地文件系统中。文档从数据库中提取并在内存中排队,然后由多个线程从共享队列中提取以进行处理 我面临的问题是,在一段时间内,处理速度会变慢。转换在最初几天内进行得更快,对于大小为50KB的文档来说是2秒,而对于同一文档来说,转换在几天后进行得更慢,比如20秒。我所能看到的是,随着时间的推移,处理时间呈下降趋势。我无法确定是什么导致了这种下降趋势。即使重新启动Window

我有一个Windows服务,它可以轮询数据库中任何类型为doc、docx、pdf和rtf的上传文档,并将它们转换为HTML并保存到本地文件系统中。文档从数据库中提取并在内存中排队,然后由多个线程从共享队列中提取以进行处理

我面临的问题是,在一段时间内,处理速度会变慢。转换在最初几天内进行得更快,对于大小为50KB的文档来说是2秒,而对于同一文档来说,转换在几天后进行得更慢,比如20秒。我所能看到的是,随着时间的推移,处理时间呈下降趋势。我无法确定是什么导致了这种下降趋势。即使重新启动Windows服务也无济于事

Microsoft Office安装在Windows服务器上,用于文档转换。每天有将近2000个文档被转换成HTML


所以我的问题是,我们可以使用多线程将MicrosoftWord文档处理为HTML吗

我认为您已经在尽可能多地使用多线程处理—您无法使Word更高效,只需并行运行多个Word实例(您正在这样做)。我建议多花点时间调查

做一些日志记录/跟踪和分析。找出哪些代码/方法行是真正慢的

如果它是慢词,试着观察它和系统。慢是从哪里来的?它是否耗尽了所有的CPU?可能磁盘被访问的次数太多了?也许在某个地方收集的临时文件太多了?或者你的内存用完了,Windows正在疯狂地交换?在最后一种情况下,是什么在使用它呢?也许你没有正确地关闭某些东西(比如Word本身或者你打开的文件)