diff --git a/Implab/AbstractEvent.cs b/Implab/AbstractEvent.cs
--- a/Implab/AbstractEvent.cs
+++ b/Implab/AbstractEvent.cs
@@ -172,8 +172,8 @@ namespace Implab {
 
         #region synchronization traits
         protected void WaitResult(int timeout) {
-            if (!IsResolved)
-                GetResolveSignal().Wait(timeout);
+            if (!(IsResolved || GetResolveSignal().Wait(timeout)))
+                throw new TimeoutException();
 
             switch (m_state) {
                 case SUCCEEDED_STATE: