java调shell中断假死_Powershell使用 OpenFileDialog类 假死问题解决。

我创建了一个打开文件的函数。代码内容:function Openfile {

Add-Type -AssemblyName System.Windows.Forms

$openfile = New-Object System.Windows.Forms.OpenFileDialog

$openfile.Filter = ‘图片|*.jpg|All Files|*.*‘

$openfile.InitialDirectory = "C:\ManageOperate\Staff Photo"

[void]$openfile.ShowDialog()

$Openfile.title="请选择一张照片"

$Openfile.FileName

}当在Win7SP1X64环境中调用的时候没有问题。

cb6868ca073df82f2757544821cd3695.png

但当把脚本放到Windows Server2008R2环境中却出现了假死的问题。脚本始终停在这里没有窗口弹出。

705126_140723337550Dz.png

原来是由于脚本运行在MTA也就是多线程模式导致的。Powershell2.0控制台默认是MTA,Powershell3.0 控制台默认是STA。

什么是MTA和STA:

官方解释:

判断Powershell的版本和线程模式 。

Win7SP1 X64

705126_1407233375TDyM.png

WinServer2008R2

705126_1407233375U1eq.png

解决方法:在代码ShowDialog之前加入*.ShowHelp = $true判断参数function Openfile {

Add-Type -AssemblyName System.Windows.Forms

$openfile = New-Object System.Windows.Forms.OpenFileDialog

$openfile.Filter = ‘图片|*.jpg|All Files|*.*‘

$openfile.InitialDirectory = "C:\ManageOperate\Staff Photo"

$openfile.ShowHelp=$true

[void]$openfile.ShowDialog()

$Openfile.title="请选择一张照片"

$Openfile.FileName

}

我们再次在Server上执行这个函数。已经可以弹出窗口了。但窗口有点小呵呵。

705126_14072333752YBJ.png

原文:http://lixiaosong.blog.51cto.com/705126/1536071

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值