diff --git a/src/dynamixelserver.cpp b/src/dynamixelserver.cpp
index 7f503a10a73d4bb1a9919ad6fd4177a318984a12..822a9c06b33e73788476d795a7b02d5e71341fca 100644
--- a/src/dynamixelserver.cpp
+++ b/src/dynamixelserver.cpp
@@ -584,7 +584,8 @@ void *CDynamixelServer::scan_thread(void *param)
         dyn_server->dynamixel_access.enter();
         dyn_server->state=dyn_created;
         dyn_server->scan_error="communication device not initialized";
-        dyn_server->event_server->set_event(dyn_server->scan_error_event_id);
+        if(!dyn_server->event_server->event_is_set(dyn_server->scan_error_event_id))
+          dyn_server->event_server->set_event(dyn_server->scan_error_event_id);
         dyn_server->dynamixel_access.exit();
         pthread_exit(NULL);
       }
@@ -596,6 +597,8 @@ void *CDynamixelServer::scan_thread(void *param)
           if(dyn_server->event_server->event_is_set(dyn_server->stop_scan_event_id))
           {
             dyn_server->event_server->reset_event(dyn_server->stop_scan_event_id);
+            if(!dyn_server->event_server->event_is_set(dyn_server->scan_done_event_id))
+              dyn_server->event_server->set_event(dyn_server->scan_done_event_id);
             dyn_server->devices_v1.clear();
             dyn_server->devices_v2.clear();
             pthread_exit(NULL);
@@ -632,14 +635,16 @@ void *CDynamixelServer::scan_thread(void *param)
       dyn_server->devices_v2.clear();
       dyn_server->state=dyn_created;
       dyn_server->scan_error=e.what();
-      dyn_server->event_server->set_event(dyn_server->scan_error_event_id);
+      if(!dyn_server->event_server->event_is_set(dyn_server->scan_error_event_id))
+        dyn_server->event_server->set_event(dyn_server->scan_error_event_id);
       dyn_server->dynamixel_access.exit();
       pthread_exit(NULL);
     }
   }
   dyn_server->dynamixel_access.enter();
   dyn_server->state=dyn_scan_done;
-  dyn_server->event_server->set_event(dyn_server->scan_done_event_id);
+  if(!dyn_server->event_server->event_is_set(dyn_server->scan_done_event_id))
+    dyn_server->event_server->set_event(dyn_server->scan_done_event_id);
   dyn_server->dynamixel_access.exit();
   pthread_exit(NULL);
 }