SORU
20 EKİM 2008, PAZARTESİ


.NET - ' " uygulamak için en iyi yolu Ne;tüm özel durumları yakalamak işleyicisi"

En iyi yolu bir olması ne merak ediyorum eğer her şey başarısız olursa "yakalamak".

Çok özel durumlar uygulama olarak mümkün, idare ediyorsun yani ama yine de bir şeyler yapmak istiyorum bu yüzden hatalar olması kaçınılmazdır vardır bilgi toplamak ve depolamak böylece tüm işlenmemiş özel durumları yakalar bir veritabanında veya bir web hizmetine gönderebilirsiniz.

Uygulama yapar.CurrentDomain.Olay her şeyi yakalamak UnhandledException? Eğer uygulama birden çok iş parçacığı bile?

Yan not: Windows herhangi bir uygulama izin yerel API işlevleri sunar Vista bir kaza... adı aklıma gelmiyor... ama bence sonra kendini kurtarmak için değil kullanıcılarımızın çoğu hala Windows XP kullanıyor gibi kullanabilirsiniz.

CEVAP
28 HAZİRAN 2009, Pazar


Sadece Uygulama. UnhandledException davranış ile oynadı,ben (bu özel durum işlenmeyen kayıtlıdır son aşamasıdır)

Evet, uygulama sona erdirilecek olay işleyicileri ve "... program çalışmayı durdurdu iletişim" gösterilen kötü işledikten sonra

:) Sanahalabu önleyebilirsiniz.

Check out:

class Program
{
    void Run()
    {
        AppDomain.CurrentDomain.UnhandledException  = new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

        Console.WriteLine("Press enter to exit.");

        do
        {
            (new Thread(delegate()
            {
                throw new ArgumentException("ha-ha");
            })).Start();

        } while (Console.ReadLine().Trim().ToLowerInvariant() == "x");


        Console.WriteLine("last good-bye");
    }

    int r = 0;

    void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
    {
        Interlocked.Increment(ref r);
        Console.WriteLine("handled. {0}", r);
        Console.WriteLine("Terminating "   e.IsTerminating.ToString());

        Thread.CurrentThread.IsBackground = true;
        Thread.CurrentThread.Name = "Dead thread";            

        while (true)
            Thread.Sleep(TimeSpan.FromHours(1));
        //Process.GetCurrentProcess().Kill();
    }

    static void Main(string[] args)
    {
        Console.WriteLine("...");
        (new Program()).Run();
    }
}

S. S.Uygulama işlenmeyen bir kolu yapmak.Yüksek düzeyde ThreadException (Win) veya DispatcherUnhandledException sınıf kütüphanesi.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ben Schoon

    Ben Schoon

    23 Kasım 2012
  • gamingbits

    gamingbits

    2 Mayıs 2006
  • Tina Chen

    Tina Chen

    26 Mayıs 2012