SORU
23 Ocak 2009, Cuma


Çıkış C konsol yakalama#

Konuları oldukça çok içeren bir konsol uygulaması var. Eğer doğru ise, belirli koşullar monitör ve programı sonlandırmak konuları vardır. Bu fesih herhangi bir zamanda olabilir.

Program diğer iş, temizleme ve tüm dosya kolları ve bağlantıları düzgün bir şekilde kapatın ben öyle kapanıyor zaman tetikleyen bir olay ihtiyacım var. Eğer zaten yerleşik varsa emin değilim .NET çerçeve, bu yüzden benim kendi yazmadan önce soruyorum.

Eğer çizgisinde bir olay olsaydı orada acaba

MyConsoleProgram.OnExit  = CleanupBeforeExit;

CEVAP
23 Ocak 2009, Cuma


Web kodu buldum nereye emin değilim, ama şimdi eski projelerimden birini buldum. Bu bir kapatma nedeniyle konsol aniden kapalı olduğunda, örneğin temizleme kod ya da yapmak için izin

[DllImport("Kernel32")]
private static extern bool SetConsoleCtrlHandler(EventHandler handler, bool add);

private delegate bool EventHandler(CtrlType sig);
static EventHandler _handler;

enum CtrlType
{
  CTRL_C_EVENT = 0,
  CTRL_BREAK_EVENT = 1,
  CTRL_CLOSE_EVENT = 2,
  CTRL_LOGOFF_EVENT = 5,
  CTRL_SHUTDOWN_EVENT = 6
}

private static bool Handler(CtrlType sig)
{
  switch (sig)
  {
      case CtrlType.CTRL_C_EVENT:
      case CtrlType.CTRL_LOGOFF_EVENT:
      case CtrlType.CTRL_SHUTDOWN_EVENT:
      case CtrlType.CTRL_CLOSE_EVENT:
      default:
          return false;
  }
}


static void Main(string[] args)
{
  // Some biolerplate to react to close window event
  _handler  = new EventHandler(Handler);
  SetConsoleCtrlHandler(_handler, true);
  ...
}

Güncelleme

Bu yorum değil, kontrol etmek için bu özel çözüm yok gibi görünüyordeğiliyi (ya da hiç)Windows 7. Bu konu ile ilgili aşağıdaki görüşmeler: http://social.msdn.microsoft.com/Forums/en/windowscompatibility/thread/abf09824-4e4c-4f2c-ae1e-5981f06c9c6e

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BigDawsVlogs

    BigDawsVlogs

    17 HAZİRAN 2013
  • bobono1baby

    bobono1baby

    14 AĞUSTOS 2011
  • InsideBlackBerry

    InsideBlackB

    14 Aralık 2009