码迷,mamicode.com
首页 > 其他好文 > 详细

Powershell使用 OpenFileDialog类 假死问题解决。

时间:2014-08-05 23:00:10      阅读:371      评论:0      收藏:0      [点我收藏+]

标签:死机   假死   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环境中调用的时候没有问题。

bubuko.com,布布扣

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

bubuko.com,布布扣

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

什么是MTA和STA:

官方解释:

STA:http://msdn.microsoft.com/en-us/library/ms680112(v=vs.85).aspx

MTA:http://msdn.microsoft.com/en-us/library/ms693421(v=vs.85).aspx

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

Win7SP1 X64

bubuko.com,布布扣

WinServer2008R2

bubuko.com,布布扣

 

解决方法:在代码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上执行这个函数。已经可以弹出窗口了。但窗口有点小呵呵。

bubuko.com,布布扣

本文出自 “运维人生” 博客,请务必保留此出处http://lixiaosong.blog.51cto.com/705126/1536071

Powershell使用 OpenFileDialog类 假死问题解决。,布布扣,bubuko.com

Powershell使用 OpenFileDialog类 假死问题解决。

标签:死机   假死   openfiledialog   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!