【发布时间】:2012-04-24 19:52:57
【问题描述】:
有没有办法“告诉”C# 不要等待对象的方法返回?
使用 COM (VbScript) 我可以触发一个方法而无需等待它返回,所以我想以同样的方式使用 C#。
VbScript 代码:
Dim qtApp
Set qtApp = CreateObject("QuickTest.Application")
qtApp.Open("C:\Temp\Test")
qtApp.Run '// VbScript does not wait for this method to finish
Set qtApp = Nothing
C# 代码:
//Refer the object
var qtApp = new QuickTest.Application();
//Open the test
qtApp.Open("C:\\Temp\\Test");
qtApp.Test.Run(); //<<== @ this step my code is waiting for the Run method to return
qtApp.Test.Pause(); //<<== This line is never executed until Run returns
评论:
- 引用的对象 (
QuickTestApplication) 是 COM 对象,具有 Run 和 Pause 方法(如上面的代码中所述)。 - 对我来说
QuickTestApplication是一个黑盒子 - 我不想使用
Thread或ASync(这基本上是线程),但是QuickTestApplicationbuild in 方法
如果可以使用 C# 完成,我真的在寻找简单的答案
【问题讨论】:
-
在单独的线程上运行该方法?能否请您提供更多详细信息?
-
有问题的 COM 对象是否关联到当前线程?请记住,COM 对象通常是单线程单元模型。
-
@EricLippert:我的应用程序不是单线程的,我想使用它的方法。感谢您的评论
-
@Tudor:使用线程不是一种选择(设计问题)。感谢您的回复
-
@EricLippert QTP 自动化对象是一个 STA 对象。这个问题的答案是特定于应用程序,你在 C# 方面的专业知识是不够的 :)