小编use*_*371的帖子

多个InfoPath互操作自动化实例

我试图通过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

7
推荐指数
1
解决办法
1198
查看次数