diff --git a/silecs-communication-cpp/src/silecs-communication/interface/core/PLCRecvAction.cpp b/silecs-communication-cpp/src/silecs-communication/interface/core/PLCRecvAction.cpp
index 9dae94d9cef4ce43d65d500c8841ae66a144f901..92230bc9f55862f82423578699d112534c5d0da4 100644
--- a/silecs-communication-cpp/src/silecs-communication/interface/core/PLCRecvAction.cpp
+++ b/silecs-communication-cpp/src/silecs-communication/interface/core/PLCRecvAction.cpp
@@ -59,6 +59,7 @@ int PLCRecvBlockMode::execute(Context* pContext)
     int errorCode = 0;
 
     Connection* pConn = theBlock_->getPLC()->getConnection();
+    AccessArea area = theBlock_->getAccessArea();
 
     try
     {
@@ -69,7 +70,6 @@ int PLCRecvBlockMode::execute(Context* pContext)
             Device* pDev = pContext->getDevice();
 
             //Base attributes of the device within the complete data block containing all devices.
-            AccessArea area = theBlock_->getAccessArea();
             unsigned long usedAddress = theBlock_->getAddress();
             unsigned long usedSize = theBlock_->getMemSize();
             unsigned long usedDeviceOffset = pDev->getInputAddress(area) * usedSize;
@@ -148,7 +148,6 @@ int PLCRecvBlockMode::execute(Context* pContext)
 
             //begin critical section
             Lock lock(bufferMux_);
-            AccessArea area = theBlock_->getAccessArea();
             switch (area)
             {
                 case Digital:
@@ -204,6 +203,7 @@ int PLCRecvDeviceMode::execute(Context* pContext)
     timeval tod; //Time-of-day for register time-stamping
     int errorCode = 0;
     Connection* pConn = theBlock_->getPLC()->getConnection();
+    AccessArea area = theBlock_->getAccessArea();
 
     try
     {
@@ -214,7 +214,6 @@ int PLCRecvDeviceMode::execute(Context* pContext)
             Device* pDev = pContext->getDevice();
 
             //Set base attributes of the device blocks
-            AccessArea area = theBlock_->getAccessArea();
             unsigned long usedDeviceAddress = pDev->getInputAddress(area);
             unsigned long usedBlockAddress = theBlock_->getAddress();
             unsigned long usedSize = theBlock_->getMemSize();
@@ -297,7 +296,6 @@ int PLCRecvDeviceMode::execute(Context* pContext)
                 }
                 //begin critical section
                 Lock lock(bufferMux_);
-                AccessArea area = theBlock_->getAccessArea();
                 switch (area)
                 {
                     case Digital: