Çıkış C konsol yakalama# | Netgez.com
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

  • 24 Канал

    24 КанаÐ

    5 ÅžUBAT 2006
  • RogerBuckChrist

    RogerBuckChr

    9 Temmuz 2011
  • SlimaksClass

    SlimaksClass

    15 Kasım 2010