2010-01-06 7 views
1

J'écris une DLL pour capturer des poches de port (comme tcp sniffer) dans vC++. Cette application utilise un thread pour récupérer des poches en continu et a un événement pour envoyer des données à une application c#.Exception de référence NULL dans RichTextbox

Cette application c# reçoit ces données de poche et stocke ces données dans un fichier .txt à partir d'une zone de texte riche toutes les 10 secondes, puis efface la zone de texte.

En cours d'exécution, mais génère parfois une exception nullreference.

erreurs:

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

L'erreur se produit en C# lors de l'exécution car vous exécutez une application C# dans Visual Studio ... ou ...? Comment l'application C# "reçoit" les données du paquet? Pouvons-nous supposer que vous écrivez "texte seulement" dans le RichTextBox, ou écrivez-vous du texte au format RTF? Lorsque vous parlez de "stocker ces données", dites-vous que vous enregistrez le contenu de la RichTextBox en tant que fichier texte: l'erreur se produit-elle avant ou après l'appel pour enregistrer le contenu de RichTextBox? Est-ce que vous "validez" de quelque manière que ce soit, avant d'insérer dans la RichTextBox, ce que vous insérez? S'il vous plaît clarifier, merci, – BillW

+0

ya..its survenant à l'exécution only.am en utilisant vs 2003 dans l'application vC++ ont un événement dans cet événement que par le biais de données à C#. in C# utilise aussi event pour recevoir data.dont utiliser n'importe quelle validation .directement mettre ces données dans richtextbox et écrire le fichier au format unicode du fichier txt. son fonctionnement, mais après quelque temps (plus de 15 min) seulement par l'exception exception.throw de void main(). veuillez donner vos suggestions – maxy

Répondre

0

changer votre routine de mise à jour: ce

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

chaque fois gain focus est ce qui fixe l'accident.

Questions connexes