C#控制台应用程序获胜';如果通过PowerShell远程启动,则无法工作

本文关键字:启动 程启动 工作 PowerShell 获胜 应用程序 控制台 如果 | 更新日期: 2023-09-27 18:19:31

我非常绝望,因为如果我用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.DrawingSystem.Drawing.Bitmap.ctor(Int32宽,Int32高,PixelFormatformat)在Utility.ImageProcessing.CopyBitmap(位图源,Int32[]ROI)中的C:''Users###''Documents''Visual Studio 2015''项目###''Common''Utility''Utility.cs:line 46实用程序###ServiceUtilities。ByteToImage(Int32宽度、Int32高度、,Byte[]imageData)在C:''Users###''Documents''Visual Studio中2015''Projects###Interface''Common''Utility###ServiceUtilities.cs:line232在公用事业###ServiceUtilities.getImage(ImageServerClient客户端,cameraSelect Cam,FieldType FT,Int32 WaitTime)C: ''Users###''Documents''Visual Studio2015''Projects###Interface''Common''Utility###ServiceUtilities.cs:line61

到底发生了什么事?!~.~

更新:我发现了一些有趣的东西。如果新位图大于500*500*24bpp左右的定义大小,则任何新位图的创建都将失败。这可能是内存溢出造成的吗?在远程PC上仍然有足够的无内存(5,7Gb)!

C#控制台应用程序获胜';如果通过PowerShell远程启动,则无法工作

很可能您的图像在给定的时间内没有加载到内存中。尝试使用线程。加载图像时请睡眠几秒钟。这可能是使用powershell的问题,并且在使用VS远程调试器访问时有足够的时间。

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