باستخدام وضع التصحيح لبرنامج يعمل على سطح المكتب البعيد

StackOverflow https://stackoverflow.com/questions/371248

سؤال

ولدي برنامج القصيرة التي تستخدم حصرا مع اتصال سطح المكتب البعيد الذي تم تعيين فقط تشغيل البرنامج وعدم السماح لأي الوصول الأخرى إلى الجهاز البعيد. سابقا، البرنامج خرجت للتو، والسماح للاتصال إنهاء، لكنه كان بطيئا للغاية، لذلك كتبت التعليمة البرمجية التالية إلى إنهاء جلسة العمل البعيدة عندما يتم تشغيل البرنامج.

    [DllImport("wtsapi32.dll", SetLastError = true)]
    static extern bool WTSLogoffSession(IntPtr hServer, int SessionId, bool bWait);

    private IntPtr WTS_CURRENT_SERVER_HANDLE;
    private const int WTS_CURRENT_SESSION = -1;

    ...

    private void HardTerminalExit()
    {
        WTSLogoffSession(WTS_CURRENT_SERVER_HANDLE, WTS_CURRENT_SESSION, false);
    }

وهذا يعمل بشكل جيد عندما يكون هذا البرنامج في بيئة إنتاجها، وتستخدم من قبل الناس الذين الاتصال عن بعد باستخدام ملف اتصال RDP معين. مخارج الاتصال بعد تشغيل البرنامج. ومع ذلك، عند اختبار وتصحيح هذا البرنامج، إعادة تشغيل جهاز الكمبيوتر الخاص بي بعد كل تشغيل.

وأنا أبحث عن وسيلة جيدة للتمييز بين هذه الحالات. يجب أن أقوم بإعداد بعض النوع من السيناريو التصحيح أن أجهزة التحكم عن بعد في ويدير البرنامج عن بعد؟ أو هل هناك طريقة للكشف برمجيا ما إذا كان البرنامج يعمل في وضع التصحيح ومجرد تعطيل إجراءات الخروج في هذه الحالة؟

هل كانت مفيدة؟

المحلول

ويمكنك استخدام توجيهات PRAGMA:

private void HardTerminalExit()
{
  #if DEBUG
  // Soft Exit
  #else
  // Hard Exit
  #end if
}

وأعتقد أنه من الناحية العملية أفضل لاستخدام أحدث ConditionalAttribute، لكني لا أعتقد أنك يمكن أن ينفي ذلك، لذلك كنت بحاجة لتعيين متغير البيئة ل "RELEASE" نفسك:

[Conditional ( "RELEASE" )]
private void HardTerminalExit()
{
  // Hard Exit, only called when "RELEASE" is defined.
}

وهذا سوف نقول للمترجم لاستدعاء هذه الطريقة فقط عندما أعلن "إطلاق" متغير البيئة في مكان ما - وهذا يمكن أن أعلن في أثناء الترجمة (رموز الترجمة الشرطية على جزء الملكية بناء) أو كجزء من نظام قذيفة التشغيل، انظر ConditionalAttribute للحصول على المزيد من inforamation في هذا الشأن.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top