如果通过PowerShell远程启动,C#控制台应用程序将无法运行?

时间:2015-10-28 10:42:37

标签: c# powershell

我非常绝望,因为如果我使用PowerShell远程打开它,我的C#应用​​程序就不会启动。

我的应用程序正在进行一些硬件访问并抓取相机图片。如果我通过VS远程调试器打开此.exe工作正常。如果我直接在远程客户端上使用TeamViewer打开它,它运行良好。

但是,如果我尝试通过PowerShell打开我的应用程序,它会在位图操作期间崩溃

Bitmap newBmp = new Bitmap(ROI[2] - ROI[0], ROI[3] - ROI[1], source.PixelFormat);

错误"参数无效!"。

传递的值是:

new Bitmap(2544 - 1, 1944 - 3, Format24bppRgb)

为什么exe表现完全不同,即使PS与简单地启动应用程序的新实例没什么不同?

以下是我打开可执行文件的方法:

PS Z:\> invoke-command -ScriptBlock { & 'C:\Users\###\Documents\Visual Studio 2015\Projects\###\Commo
n\Remote Console\bin\Debug\Remote Console.exe' -save_path=C:\Temp\Images fov=large filename=test1 setposition=200.00 Ope
ration=getpicture } -Session $remotesession

此处的堆栈跟踪:

当然(对不起忘记了):

  

参数无效。 System.Drawing at   System.Drawing.Bitmap..ctor(Int32宽度,Int32高度,PixelFormat   在Utility.ImageProcessing.CopyBitmap(位图源,   Int32 [] ROI)在C:\ Users ### \ Documents \ Visual Studio 2015中   \ Projects ### \ Common \ Utility \ Utility.cs:第46行at   Utility。### ServiceUtilities.ByteToImage(Int32 width,Int32 height,   字节[] imageData)在C:\ Users ### \ Doc uments \ Visual Studio中   2015年\项目###接口\ COMMON \工具### ServiceUtilities.cs:行   232在Utility。### ServiceUtilities.getImage(ImageServerClient   客户端,cameraSelect Cam,FieldType FT,Int32 WaitTime)in   C:\ Users ### \ Documents \ Visual Studio   2015 \ Projects ### Interface \ Common \ Utility ### ServiceUtilities.cs:line   61

到底发生了什么事?! 〜〜

更新:我觉得很有意思。如果新位图的大于500 * 500 * 24bpp的定义大小,则任何新位图的创建都将失败。可能这是由于一些内存溢出造成的?在远程PC上仍然没有足够的RAM(5,7Gb)!

1 个答案:

答案 0 :(得分:0)

您的图像很可能在给定时间内没有加载到内存中。在图像加载时尝试使用thread.Sleep几秒钟。这可能是使用PowerShell的问题,并且在使用VS remotedebugger访问时有足够的时间。

也用于检查。在加载图像之前和加载图像之后,以毫秒为单位记录日期时间(使用远程调试器和PowerShell)。对于powershell,如果发生错误,请检查发生错误的时间。这样你就会知道加载图片需要多长时间