我试图通过Windows服务自动化Office InfoPath 2010的多个并行实例.我知道不支持从服务自动化Office,但这是我的客户的要求.
我可以以并行方式自动化其他Office应用程序,但InfoPath的行为则不同.
我发现只要创建了一个INFOPATH.EXE进程的实例,无论进行多少并行调用CreateObject("InfoPath.Application")
.与此相反,可以通过类似的机制创建WINWORD.EXE的多个实例CreateObject("Word.Application")
要重现此问题,可以使用简单的控制台应用程序.
static void Main(string[] args) {
// Create two instances of word in parallel
ThreadPool.QueueUserWorkItem(Word1);
ThreadPool.QueueUserWorkItem(Word2);
System.Threading.Thread.Sleep(5000);
// Attempt to create two instances of infopath in parallel
ThreadPool.QueueUserWorkItem(InfoPath1);
ThreadPool.QueueUserWorkItem(InfoPath2);
}
static void Word1(object context) {
OfficeInterop.WordTest word = new OfficeInterop.WordTest();
word.Test();
}
static void Word2(object context) {
OfficeInterop.WordTest word = new OfficeInterop.WordTest();
word.Test();
}
static void InfoPath1(object context) {
OfficeInterop.InfoPathTest infoPath = new OfficeInterop.InfoPathTest();
infoPath.Test();
}
static void InfoPath2(object context) {
OfficeInterop.InfoPathTest …
Run Code Online (Sandbox Code Playgroud) c# infopath windows-services office-automation office-interop