Makale numarası: 326219 - Son Gözden Geçirme: 20 Mayıs 2003 Salı - Gözden geçirme: 3.0

SORUN: Kayan nokta denetim kayıttaki bir yönetilen uygulama yeniden değiştirdiğinizde System.Arithmetic özel durum hatası

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Belirtiler

Yönetilen uygulamalar kayan nokta denetim kayıttaki değiştirdiğinizde, Microsoft .NET Framework ortak dil çalışma zamanı içinde aşağıdaki gibi özel durum hata iletileri de alabilirsiniz:
Içinde system.windows.forms.dll 'System.ArithmeticException' türünde işlenmeyen bir özel durum oluştu
Ek bilgi: ya da Yetersizlik durumu Aritmetik işlemde taşma.

Neden

Ortak dil çalışma zamanı ve .NET Framework kayan noktalı denetim kaydı varsayılan duruma ayarlanmış olduğunu varsayalım.

Çözüm

Yönetilen uygulamayı kayan noktalı denetim kaydı değiştirmelisiniz yönetilmeyen kod çağırırsa, yönetilen uygulamanın program denetiminin döndürdüğü için önce varsayılan durumuna kayan nokta kaydı yönetilmeyen kod döndürmelidir.

Bir ıntel sistemi kullanıyorsanız, kayan nokta denetim kaydı'nı sıfırlamak için yönetilen uygulamanın program denetiminin döndürmeden önce örneğin, aşağıdaki ifadeyi kullanabilirsiniz:
	_controlfp(_CW_DEFAULT, 0xfffff);
      //See the "Steps to Reproduce the Behavior" section of this article.
				

Durum

Bu davranış tasarım yüzündendir.

Daha fazla bilgi

Davranışı Yeniden Oluşturma Adımları

  1. Microsoft Visual Studio .NET'i başlatın.
  2. Dosya menüsünden Yeni ' yi tıklatın ve sonra Project ' i tıklatın.
  3. Yeni proje) iletişim kutusunda, Visual Basic Projects ya da Visual C# ProjectsProject Types altında tıklatın ve şablonları altında Windows uygulama ' yı tıklatın. Varsayılan olarak, Form1 oluşturulur.
  4. Form1.Main işlevi kodunu görmek için .cs veya .vb dosyasını açın.
  5. 
       [STAThread]
       static void Main() 
       {
            Application.Run(new Form1());
       }
    
    					
    
      [DllImport("msvcr70.dll", CallingConvention = CallingConvention.Cdecl)]
          public static extern int _controlfp(int n, int mask);
    
    					
    
       [STAThread]
       static void Main() 
       {
            const int _EM_OVERFLOW = 0x00000004;
            const int _MCW_EM = 0x0008001F;
            _controlfp(_EM_OVERFLOW, _MCW_EM);
            Application.Run(new Form1());
       }
  6. Oluşturup projeyi çalıştırın.

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Common Language Runtime (included with the .NET Framework) 1.0
Anahtar Kelimeler: 
kbmt kbprb kbnofix KB326219 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:326219  (http://support.microsoft.com/kb/326219/en-us/ )
Retired KB ArticleKullanım Dışı Bilgi Bankası İçeriği Yasal Uyarı
Bu makale, Microsoft'un artık destek sağlamadığı ürünler ile ilgili olarak yazılmıştır. Bu nedenle, bu makale "olduğu gibi" sağlanmıştır ve bundan sonra güncelleştirilmeyecektir.