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

  • AFISHAL

    AFISHAL

    7 Mart 2009
  • calicoJake

    calicoJake

    29 EKİM 2007
  • Chuck Testa

    Chuck Testa

    14 AĞUSTOS 2011