2016-06-15 21 views
6

kullanırken Unhandled 'System.ComponentModel.Win32Exception' kullanıyorum ve AvalonDock 2.0 kullanıyorum ve hata ayıklama modundayken hata ayıklama modundayken (hata ayıklama olmadan çalışırken iyi çalışır) bir dock kabı açtığımda. Ben aşağıda istisna olsun:AvalonDock 2.0

bilgiye

'System.ComponentModel.Win32Exception' WindowsBase.dll oluştu tür bir işlenmeyen istisna: işlemi başarıyla ben rastladım

tamamlandı Bu answer, Özel Durum Ayarları kutusundaki kutuların işaretini kaldırmanızı önerir. Kablolu olan şey, onu ilk kez kullanmasıydı. ama artık değil. Diğer makinelerde denedim ya da çalışmıyor. Bunu düzeltmek için herhangi bir öneri.
Avalon kod (satır 5 atılan istisna)

protected override IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) { 
      if (msg == Win32Helper.WM_WINDOWPOSCHANGING) { 
       if (_internalHost_ContentRendered) { 
        // the below line throw the exception 
        Win32Helper.SetWindowPos(_internalHwndSource.Handle, Win32Helper.HWND_TOP, 0, 0, 0, 0, Win32Helper.SetWindowPosFlags.IgnoreMove | Win32Helper.SetWindowPosFlags.IgnoreResize); 
       } 
      } 
      return base.WndProc(hwnd, msg, wParam, lParam, ref handled); 
     } 
+0

Bu, kütüphane tasarımcısı tarafında sadece kemik kafalı kodlamadır. Başarısızlık olduğunu bildiren bir hata kodu ile bir Win32Exception atıyorlar, muhtemelen "ERROR_SUCCESS". Özel durum yapıcısı, bu hata kodunu * "İşlem başarıyla tamamlandı" şeklinde bir mesaja çeviriyor * - yani hata oluşmadı. Kütüphanenin bakıcılarıyla bir hata raporu gönderin. –

+0

@CodyGray evet, bu doğru, ancak uygulama tarafındaki istisnayı yakalamaktan vazgeçmenin bir yolu var. Benim soruma referans olarak cevap olarak. Çözüm ilk başta çalıştı ama artık değil. ve nedenini anlayamadım. – IBRA

+0

Burada gönderdiğiniz istisna mesajı, bunun bir ilk fırsat istisnası olduğunu göstermez. Yine de, sorunun sorunu çözmesi de olası değildir. Kitaplık kodunda bir istisna yakalayan ve onu işleyen bir yakalama bloğu olmasını gerektirir. Başarı gösteren bir özel durumla başa çıkmak için ne yaptığınızdan emin değilim. –

cevap

3

Görünüşe orada bir issue yayımlandı, ama bu ana kadar hiçbir yanıt ile.

Bir geçici çözüm olarak, Application.DispatcherUnhandledException kullanarak işlenmeyen istisnaları App.xaml.cs'dan kullanmıştım.
Lütfen daha fazla ayrıntı için bu answer numaralı telefonu kontrol edin.
Kodu:

protected override void OnStartup(StartupEventArgs e) { 
    base.OnStartup(e); 
    this.DispatcherUnhandledException += AppGlobalDispatcherUnhandledException; 
} 

private void AppGlobalDispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e) { 
    e.Handled = true; 
} 
+0

Windows 10'daki Hata Ayıklama veya Serbest Bırakma modunda VS2015 içinden çalışırken, bu çözümü uygularken uygulama kapatıldığında sonlandırılmaz. Sonunda uygulamayı sonlandırmak için hata ayıklama düğmesine basmanız gerekiyor. Herhangi bir fikir? – Andreas

1

bu sayfadaki başkasının iniş için aşağıdaki ayarı ile sorunu kurtulmak başardı kapalı:

Araçlar> Seçenekler> Hata ayıklama> Genel> Enable UI hata ayıklama Araçlar için XAML

1

Hızlı kesmek, hata ayıklama yapılandırması sırasında LayoutAutoHideWindowControl sınıfında UpdateWindowPos() özelliğini devre dışı bırakmış olmamdır. benim şimdiki deneyim için

internal void Show(LayoutAnchorControl anchor) 
    { 
     if (_model != null) 
      throw new InvalidOperationException(); 

     _anchor = anchor; 
     _model = anchor.Model as LayoutAnchorable; 
     _side = (anchor.Model.Parent.Parent as LayoutAnchorSide).Side; 
     _manager = _model.Root.Manager; 
     CreateInternalGrid(); 

     _model.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(_model_PropertyChanged); 

     Visibility = System.Windows.Visibility.Visible; 
     InvalidateMeasure(); 
#if !DEBUG 
     UpdateWindowPos(); 
#endif 
     Trace.WriteLine("LayoutAutoHideWindowControl.Show()"); 
    } 

, bu minimize yuvalanabilir konteynerlerin & damla sürüklemek sadece sakatlık sonuçlanır.

+0

veya sadece '#if! DEBUG' (ve # ELSE'yi atlayın) – kmote

+0

@kmote dilek benim emrimdir – Henk