簡體   English   中英

C#程序僅在調試模式下有效

[英]C# Program Only Works in Debug Mode



我和我的一些同事正在一起研究一個項目,遇到了一個我們無法解決的怪異問題。
該項目涉及在客戶端和服務器之間創建VNC連接,並使用C#編寫(我們使用的是Visual Studio 2010)。 我們正在為客戶端使用VNCSharp庫
我要說的問題是,一旦我們開始與服務器的連接,就會引發ArgumentException。
提供的一些信息是這樣的:

**********例外文字**********
System.ArgumentException:參數無效。
在System.Drawing.Bitmap..ctor處(Int32寬度,Int32高度,PixelFormat格式)
在VncSharp.RemoteDesktop.SetupDesktop()
在VncSharp.RemoteDesktop.Initialize()
在VncSharp.RemoteDesktop.Connect(字符串主機,Int32顯示,布爾視圖僅,布爾縮放)
在VncSharp.RemoteDesktop.Connect(字符串主機)
在RemoteDesktopTest.Form2.startConnection()

of the times, whereas in others it works perfectly well. 另一個奇怪的事情是,它只在時候發生,而在另時候,它運行得很好。 具體來說,它總是在調試模式下運行時才有效(即,當我們使用F11逐行運行程序時),而在常規運行時(即Ctrl + F5),它要么工作正常,要么不工作,而無需任何模式認識。

我們將非常感謝您提供的所有幫助; 如果有任何我可以補充的細節可以幫助回答這個問題,請告訴我。 此外,對於任何語法/拼寫錯誤,我深表歉意。 英語不是我的母語……如果對此問題有些疑問,我也深表歉意。 我們都是初學者,這是我們的第一個“大項目”,所以這也是我第一次在Stack Overflow中提出問題。

編輯:
代碼中的某些部分可能具有相關性。
這些是在我們向表單添加VncSharp控件並自定義其設置后自動生成的代碼行:

this.remoteDesktop1 =新的VncSharp.RemoteDesktop();

this.remoteDesktop1.AutoScroll = true;
this.remoteDesktop1.AutoScrollMinSize = new System.Drawing.Size(608,427);
this.remoteDesktop1.Dock = System.Windows.Forms.DockStyle.Fill;
this.remoteDesktop1.Location =新的System.Drawing.Point(0,0);
this.remoteDesktop1.Name =“ remoteDesktop1”;
this.remoteDesktop1.Size =新的System.Drawing.Size(1113,580);
this.remoteDesktop1.TabIndex = 1;

這是我調用Connect方法的代碼行,而IP只是從文本框中獲取的字符串:

remoteDesktop1.Connect(this.IP);

這些來自處理ConnectComplete事件的方法(e是傳遞給該方法的EventArgs對象):

this.Location =新Point(0,0);
this.Size = Screen.PrimaryScreen.WorkingArea.Size;
this.remoteDesktop1.Size =新的System.Drawing.Size(e.DesktopWidth,e.DesktopHeight);

除了調用Disconnect方法的那一行外,我們實際上沒有編寫任何其他代碼來處理該對象。 如果我發現忘記了某些內容,請再次編輯並添加。 另外,如果我應該在此處添加代碼中的特定內容,請告訴我。

看來,問題與時間有關。
在調試模式下,程序運行得太快,並且width和height變量的值沒有更新。
幸運的是,VncSharp是開源的,因此只要這兩個變量中的任何一個仍具有其默認值,我就可以添加自己的行並將其置於循環中,並且現在可以使用了。

謝謝大家的幫助:)

有同樣的問題。 對我來說,它可以在調試模式下編譯vncsharp解決方案。

在RfbProtocol第398行( ReadServerInit方法的第一行)中,我進行了轉換

int w = Reader.ReadUInt16();

int w = 0;
while (w == 0)
    w = Reader.ReadUInt16();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM