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

  • akalyne

    akalyne

    13 Mayıs 2009
  • AllYourNewsByMe

    AllYourNewsB

    18 Temmuz 2011
  • MrMimoB

    MrMimoB

    11 NİSAN 2011