2010-01-06 30 views
1

我正在寫一個dll來捕獲vC++中的端口口袋(如tcp sniffer)。此應用程序使用一個線程連續檢索口袋並且有一個事件來將數據發送到c#應用程序。RichTextbox中的NULL引用異常

c#這appliaction接收口袋數據並存儲該數據來從一個RichTextBox .txt文件,每10秒,然後清除文本框。

它正在運行,但有時會拋出一個nullreference異常。

錯誤:

at System.Windows.Forms.RichTextBox.EditStreamProc(IntPtr dwCookie, IntPtr buf, Int32 cb, Int32& transferred) 
    at System.Windows.Forms.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc, IntPtr hWnd, Int32 msg, IntPtr wParam, IntPtr lParam) 
    at System.Windows.Forms.NativeWindow.DefWndProc(Message& m) 
    at System.Windows.Forms.Control.DefWndProc(Message& m) 
    at System.Windows.Forms.Control.WndProc(Message& m) 
    at System.Windows.Forms.TextBoxBase.WndProc(Message& m) 
    at System.Windows.Forms.RichTextBox.WndProc(Message& m) 
    at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m) 
    at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m) 
    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 
+0

錯誤發生在C#在運行時,因爲你正在Visual Studio中運行C#應用程序...或...? C#應用程序如何「接收」數據包數據?我們可以假設你正在向RichTextBox寫入「僅文本」,還是正在編寫RTF格式的文本?當你提到「存儲數據」時,你是說你將RichTextBox的內容保存爲文本文件:是否在調用之前或之後發生了保存RichTextBox內容的錯誤?在插入RichTextBox之前,您是否以任何方式「驗證」,插入了什麼?請澄清,謝謝, – BillW 2010-01-06 07:03:22

+0

ya ..它發生在運行時only.am使用vs 2003 在vC++應用程序有事件在這個事件只有通過數據到C#。在c#中也使用事件來接收data.dont使用任何驗證。直接將該數據放入richtextbox並以txt文件的unicode格式寫入文件。 它的工作,但過了一段時間(超過15分鐘),只能通過exception main()的exception.throw錯誤。 請給出建議 – maxy 2010-01-06 07:11:58

回答

0

改變你的日常更新此:

debugText.SuspendLayout(); 
debugText.Focus(); 
debugText.SelectionStart = 0; 
debugText.SelectionLength = 0; 
debugText.SelectedText += message; 
debugText.SelectedText += Environment.NewLine; 
debugText.ResumeLayout(); 

獲得焦點每次就是修復崩潰。