2010-11-29 19 views
6

होना चाहिए मुझे अपने आवेदन से एक अजीब अपवाद का सामना करना पड़ रहा है। यह तब तक अच्छा काम कर रहा है जब तक कि मैंने अपनी विकास मशीन (एक ही ओएस + वीएस -2010) को अपग्रेड नहीं किया और फिर से सॉफ्टवेयर को डीबग करने का प्रयास किया। यह मुझे प्राप्त अपवाद है:डब्ल्यूपीएफ - चौड़ाई और ऊंचाई गैर-नकारात्मक

चौड़ाई और ऊंचाई गैर-ऋणात्मक होना चाहिए।

ढेर यहाँ का पता लगाने:

at System.Windows.Size..ctor(Double width, Double height) 
    at System.Windows.Window.SourceWindowHelper.GetHwndNonClientAreaSizeInMeasureUnits() 
    at System.Windows.Window.GetHwndNonClientAreaSizeInMeasureUnits() 
    at System.Windows.Window.MeasureOverrideHelper(Size constraint) 
    at System.Windows.Window.MeasureOverride(Size availableSize) 
    at System.Windows.FrameworkElement.MeasureCore(Size availableSize) 
    at System.Windows.UIElement.Measure(Size availableSize) 
    at System.Windows.ContextLayoutManager.UpdateLayout() 
    at System.Windows.ContextLayoutManager.UpdateLayoutCallback(Object arg) 
    at System.Windows.Media.MediaContext.InvokeOnRenderCallback.DoWork() 
    at System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks() 
    at System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget) 
    at System.Windows.Media.MediaContext.RenderMessageHandler(Object resizedCompositionTarget) 
    at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) 
    at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler) 
    at System.Windows.Threading.DispatcherOperation.InvokeImpl() 
    at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state) 
    at System.Threading.ExecutionContext.runTryCode(Object userData) 
    at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) 
    at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
    at System.Windows.Threading.DispatcherOperation.Invoke() 
    at System.Windows.Threading.Dispatcher.ProcessQueue() 
    at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) 
    at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) 
    at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o) 
    at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) 
    at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler) 
    at System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs) 
    at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam) 
    at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg) 
    at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame) 
    at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame) 
    at System.Windows.Threading.Dispatcher.Run() 
    at System.Windows.Application.RunDispatcher(Object ignore) 
    at System.Windows.Application.RunInternal(Window window) 
    at System.Windows.Application.Run(Window window) 
    at System.Windows.Application.Run() 
    at AdvancedConsole2._0.App.Main() in F:\Projects\hitech\AdvancedConsole2.0\trunk\AdvancedConsole2.0\AdvancedConsole2.0\obj\x86\Debug\App.g.cs:line 0 
    at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
    at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 
    at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
    at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
    at System.Threading.ThreadHelper.ThreadStart() 
+0

आपकी चौड़ाई और ऊंचाई मान क्या हैं? क्या आपके पास डिबगर उन्हें प्रदर्शित कर सकता है? – chrisaycock

उत्तर

8

आप अपने चौड़ाई और ऊंचाई की जांच करने की जरूरत है। यह एक या दोनों से नकारात्मक है, यह एक काफी सुरक्षित शर्त है। मैं यह नहीं कहूंगा कि यह निश्चित है लेकिन मैं इस पर बहुत सारा पैसा लगाने के इच्छुक हूं :-)

इसके लायक होने के लिए, यह एक बदले गए मॉनीटर रिज़ॉल्यूशन में कोई समस्या हो सकती है। कुछ लोग आपकी स्क्रीन आकार से अपने खिड़की के आकार को घटाने और दो से विभाजित करने के लिए एक सरल गणना करेंगे।

यदि यह पता चला कि आपकी विंडो आपकी स्क्रीन से बड़ी है, तो आपको शायद स्थिति या आकार के लिए नकारात्मक मान मिलेंगे।

चौड़ाई और ऊंचाई की गणना करने वाले कोड को देखे बिना, यह निश्चित रूप से सभी अनुमान है। मैं सुझाव देता हूं कि इसे और/या अस्थायी रूप से कोड को किसी भी तरह आउटपुट करने के लिए कोड जोड़ना ताकि आप देख सकें कि क्या हो रहा है।

+0

दूसरा सूचक स्थान पर मारा। मेरे पास एक कस्टम नियंत्रण है जो आकार बदलने पर सुनता है और परिणाम नकारात्मक था। +1 –

1

मैं इसके लिए क्रेडिट नहीं लेना चाहता हूं, लेकिन जब उन्होंने प्रदर्शन समस्या का सुझाव दिया तो पक्सडीब्लो बिल्कुल सही है। अगर मैं उसका समर्थन करने के लिए टिप्पणी कर सकता था, तो मेरे पास होता, लेकिन 50 प्रतिनिधि की आवश्यकता होती थी।

यहाँ मेरी मुद्दा था:

मैं अभी हाल ही में 3 पर नज़र रखता है का उपयोग शुरू किया; मेरा लैपटॉप और दो 22-इंच मॉनीटर।

इसे काम करने के लिए मुझे स्क्रीन रिज़ॉल्यूशन पेज में मॉनीटर को स्थानांतरित करना पड़ा जब तक कि मेरे पास सही ऑर्डर नहीं था। ऐसा करने में, मैंने गलती से एक मॉनिटर को दूसरों की तुलना में अधिक स्थानांतरित कर दिया। विजुअल स्टूडियो मॉनिटर पर दुर्घटनाग्रस्त है जो दूसरे दो के साथ गठबंधन नहीं है।

* ठीक *

  1. राइट-क्लिक करें डेस्कटॉप पर
  2. स्क्रीन का चयन संकल्प
  3. मॉनिटर स्क्रीन इसलिए स्थानांतरित करने के लिए उन सभी को शीर्ष पर गठबंधन किए जा सकें।
  4. लागू करें और ठीक क्लिक करें।
संबंधित मुद्दे