Index: trunk/BNC/bnccaster.cpp
===================================================================
--- trunk/BNC/bnccaster.cpp	(revision 1389)
+++ trunk/BNC/bnccaster.cpp	(revision 1390)
@@ -39,4 +39,6 @@
  * -----------------------------------------------------------------------*/
 
+#include <iostream>
+
 #include <math.h>
 #include <unistd.h>
@@ -47,4 +49,6 @@
 #include "bncutils.h"
 #include "RTCM/GPSDecoder.h"
+
+using namespace std;
 
 // Constructor
@@ -117,7 +121,11 @@
   while(it.hasNext()){
     bncGetThread* thread = it.next();
+    cout << "~bncCaster A" << endl;
     thread->terminate();
+    cout << "~bncCaster B" << endl;
     thread->wait();
+    cout << "~bncCaster C" << endl;
     delete thread;
+    cout << "~bncCaster D" << endl;
   }
   delete _out;
Index: trunk/BNC/bncgetthread.cpp
===================================================================
--- trunk/BNC/bncgetthread.cpp	(revision 1389)
+++ trunk/BNC/bncgetthread.cpp	(revision 1390)
@@ -297,4 +297,15 @@
   delete _rawOutFile;
   delete _serialPort;
+}
+
+// 
+////////////////////////////////////////////////////////////////////////////
+void bncGetThread::terminate() {
+  cout << "terminate a" << endl;
+  if (_query) {
+    _query->stop();
+  }
+  cout << "terminate b" << endl;
+  QThread::terminate();
 }
 
Index: trunk/BNC/bncgetthread.h
===================================================================
--- trunk/BNC/bncgetthread.h	(revision 1389)
+++ trunk/BNC/bncgetthread.h	(revision 1390)
@@ -52,4 +52,6 @@
 
    ~bncGetThread();
+
+   void terminate();
 
    QByteArray staID() const {return _staID;}
Index: trunk/BNC/bncnetquery.h
===================================================================
--- trunk/BNC/bncnetquery.h	(revision 1389)
+++ trunk/BNC/bncnetquery.h	(revision 1390)
@@ -17,5 +17,6 @@
   }
   virtual ~bncNetQuery() {};
-
+  
+  virtual void stop() = 0;
   virtual void waitForRequestResult(const QUrl& url, QByteArray& outData) = 0;
   virtual void startRequest(const QUrl& url, const QByteArray& gga) = 0;
Index: trunk/BNC/bncnetqueryv1.cpp
===================================================================
--- trunk/BNC/bncnetqueryv1.cpp	(revision 1389)
+++ trunk/BNC/bncnetqueryv1.cpp	(revision 1390)
@@ -34,4 +34,10 @@
 bncNetQueryV1::~bncNetQueryV1() {
   delete _socket;
+}
+
+// 
+////////////////////////////////////////////////////////////////////////////
+void bncNetQueryV1::stop() {
+
 }
 
Index: trunk/BNC/bncnetqueryv1.h
===================================================================
--- trunk/BNC/bncnetqueryv1.h	(revision 1389)
+++ trunk/BNC/bncnetqueryv1.h	(revision 1390)
@@ -9,4 +9,5 @@
   virtual ~bncNetQueryV1();
 
+  virtual void stop();
   virtual void waitForRequestResult(const QUrl& url, QByteArray& outData);
   virtual void startRequest(const QUrl& url, const QByteArray& gga);
Index: trunk/BNC/bncnetqueryv2.cpp
===================================================================
--- trunk/BNC/bncnetqueryv2.cpp	(revision 1389)
+++ trunk/BNC/bncnetqueryv2.cpp	(revision 1390)
@@ -35,4 +35,11 @@
   delete _reply;
   delete _manager;
+}
+
+// 
+////////////////////////////////////////////////////////////////////////////
+void bncNetQueryV2::stop() {
+  _reply->abort();
+  _eventLoop->quit();
 }
 
