通过PowerShell从DLL调用时,表单挂起

时间:2015-11-19 02:45:27

标签: forms powershell dll

我有一个包含几个不同类的DLL文件。在这个DLL中,我创建了一个Windows窗体。

在构建DLL项目之后,我打开了PowerShell(为方便起见我使用了ISE)并执行了下面的脚本 -

[reflection.assembly]::LoadFile("...\MyDLL.dll")
$NewForm = New-Object (AssemblyName).(Class Name of a class with a few subs, one of which will show the form I created)
$NewForm.ShowForm()

ShowForm是一个简单的子窗口,它通过调用窗体名称和.Show()来显示窗体。

执行此操作时,表单出现,表单挂起。这几乎就像整个表单被禁用一样。我无法与表单上的任何控件进行交互,也无法通过按顶部的红色X来关闭它。

我想存储一些与我在DLL文件中创建的方法一起使用的表单,这样如果我决定使用表单在其他应用程序中使用它们,我将不必重建表单

(对于那些想知道为什么然后我正在使用powershell的人 - 我觉得首先从Powershell测试DLL中的函数/ subs更容易,因为像Powershell这样的命令行工具中的3行可以很容易地调用子/函数来自DLL,而不是创建/修改/重新编译.exe项目来执行相同的操作)

1 个答案:

答案 0 :(得分:1)

每当我尝试在PowerShell中使用表单对象调用.Show()方法时,它似乎总是失败。您可以考虑尝试.ShowDialog(),它阻止当前线程执行任何操作直到它退出,但会话不会挂起。我还没有研究过这背后的“为什么”,但是对于你所描述的,我假设.ShowDialog将为你效劳。