6. الخروج من وضع الحماية

استنادًا إلى طريقة تشغيل وضع الحماية (راجِع هذه الخطوة)، عليك تعديل طريقة إنهاء وضع الحماية، وبالتالي أيضًا Sandboxee.

الخروج من وضع الحماية الذي يتم تنفيذه بشكل متزامن

إذا كان وضع الحماية يعمل بشكل متزامن، لن تعرض الدالة Run أي قيمة إلا بعد انتهاء Sandboxee. وبالتالي، لا يلزم اتّخاذ أي خطوة إضافية لإنهاء الاشتراك. يوضّح مقتطف الرمز أدناه هذا السيناريو:

Sandbox2::Result result = s2.Run();
LOG(INFO) << "Final execution status: " << result.ToString();

الخروج من وضع الحماية الذي يتم تشغيله بشكل غير متزامن

إذا كانت البيئة التجريبية تعمل بشكل غير متزامن، سيتوفّر خياران لإيقافها. أولاً، يمكنك الانتظار إلى أن تكتمل عملية Sandboxee وتتلقّى حالة التنفيذ النهائية:

sandbox2::Result result = s2.AwaitResult();
LOG(INFO) << "Final execution status: " << result.ToString();

يمكنك بدلاً من ذلك إيقاف Sandboxee في أي وقت، ولكن لا يزال يُنصح باستدعاء AwaitResult() لأنّ Sandboxee قد يتم إيقافه لسبب آخر في الوقت الحالي:

s2.Kill();
sandbox2::Result result = s2.AwaitResult();
LOG(INFO) << "Final execution status: " << result.ToString();