C#程序仅在调试模式下工作

C#程序仅在调试模式下工作,c#,vnc,argumentexception,C#,Vnc,Argumentexception,我和我的一些同事正在一起做一个项目,遇到了一个我们无法解决的奇怪问题。该项目涉及在客户端和服务器之间创建VNC连接,并且是用C#编写的(我们使用的是Visual Studio 2010)。我们正在为客户端使用。我提到的问题是,一旦我们启动与服务器的连接,就会引发ArgumentException。 提供的一些信息如下: 异常文本 System.ArgumentException:参数无效。 位于System.Drawing.Bitmap..ctor(Int32宽度、Int32高度、像素格式) 在



我和我的一些同事正在一起做一个项目,遇到了一个我们无法解决的奇怪问题。
该项目涉及在客户端和服务器之间创建VNC连接,并且是用C#编写的(我们使用的是Visual Studio 2010)。我们正在为客户端使用。我提到的问题是,一旦我们启动与服务器的连接,就会引发ArgumentException。
提供的一些信息如下:

异常文本 System.ArgumentException:参数无效。
位于System.Drawing.Bitmap..ctor(Int32宽度、Int32高度、像素格式)
在VncSharp.RemoteDesktop.SetupDesktop()上 在VncSharp.RemoteDesktop.Initialize()上 在VncSharp.RemoteDesktop.Connect(字符串主机、Int32显示、布尔视图、布尔缩放)
在VncSharp.RemoteDesktop.Connect(字符串主机)
在RemoteDesktopTest.Form2.startConnection()中

另一件奇怪的事情是,它只在某些时候出现,而在另一些时候,它工作得非常好。具体来说,它在调试模式下运行时(即,当我们使用F11逐行运行程序时)总是有效的,在定期运行时(即Ctrl+F5),它要么有效,要么无效,没有任何我们可以识别的模式

我们将非常感谢任何和所有的帮助;如果有任何细节我可以补充,这将有助于回答这个问题,请让我知道。 此外,我为任何语法/拼写错误道歉;英语不是我的第一语言。。。如果这个问题有什么不对劲,我也向你道歉。我们都是初学者,这是我们的第一个“大项目”,所以这也是我第一次在Stack Overflow中提出问题

编辑:
代码的某些部分可能与此相关。
以下是我们将VncSharp控件添加到表单并自定义其设置后自动生成的代码行:

this.remoteDesktop1=new VncSharp.RemoteDesktop()

this.remoteDesktop1.AutoScroll=true
this.remoteDesktop1.AutoScrollMinSize=新系统.Drawing.Size(608427)
this.remoteDesktop1.Dock=System.Windows.Forms.DockStyle.Fill
this.remoteDesktop1.Location=新系统.Drawing.Point(0,0)
this.remoteDesktop1.Name=“remoteDesktop1”
this.remoteDesktop1.Size=新系统.Drawing.Size(1113580)
this.remoteDesktop1.TabIndex=1

这是我调用Connect方法的代码行,而IP只是从文本框中提取的字符串:

remoteDesktop1.Connect(this.IP)

这些来自处理ConnectComplete事件的方法(e是传递给该方法的EventArgs对象):

该位置=新点(0,0)
this.Size=Screen.PrimaryScreen.WorkingArea.Size
this.remoteDesktop1.Size=新系统.Drawing.Size(e.DesktopWidth,e.DesktopHeight)


除了调用Disconnect方法的那一行之外,我们还没有编写过处理这个对象的其他代码行。如果我意识到我忘记了什么,我会再次编辑并添加它。另外,如果我在这里添加的代码中有任何特定内容,请告诉我。

这个问题似乎与时间有关。
脱离调试模式后,程序运行速度过快,并且这些宽度和高度变量的值没有更新。
幸运的是,VncSharp是开源的,所以我可以添加自己的行并将其保留在一个循环中,只要这两个变量中的任何一个仍然有其默认值,现在它就可以工作了


谢谢你的帮助,每个人:)都有同样的问题。对我来说,它可以在调试模式下编译vncsharp解决方案

int w = Reader.ReadUInt16();


您是否有代码可以共享以指出错误?参数无效,宽度和高度应为int32。你是如何生成这些参数的?你确定它们是整数吗?VNCSHARP是开源的。在
SetupDesktop()
中设置程序断点。然后查看正在传递哪些参数。我怀疑它使用的是坐标而不是边界。我想我应该共享代码,但不确定哪一部分可能是造成这种情况的原因,所以我希望这可能是一个一般性的问题。。。我现在将编辑并添加一些代码。如果您能在否决此问题时告诉我原因,我将不胜感激,这样我将来的问题就不会那么糟糕了。我确实觉得这个问题很糟糕,但我们真的对这个问题的原因一无所知,不知道还能做什么;通过适当的批评,下一次可能会更有成效,对各方都有帮助。对于协议,在发布这个问题之前,我确实浏览了“如何提问”页面。
int w = 0;
while (w == 0)
    w = Reader.ReadUInt16();