HandyControl icon indicating copy to clipboard operation
HandyControl copied to clipboard

'The type initializer for 'HandyControl.Controls.Window' threw an exception.'

Open DineshSolanki opened this issue 3 years ago • 10 comments

The exception occurs at Messagebox.Show/Ask/Error etc calls. ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.

To Reproduce Steps to reproduce the behavior: This happens randomly and I couldn't find the exact way to reproduce.

Environment (please complete the following information):

  • .net: [.net core 3.1
  • IDE [e.g. vs2019]
  • Version [2.5.3.2]
Stack Trace-
at HandyControl.Controls.Window..ctor()
   at HandyControl.Controls.MessageBox..ctor()
   at HandyControl.Controls.MessageBox.CreateMessageBox(Window owner, String messageBoxText, String caption, MessageBoxButton button, MessageBoxImage icon, MessageBoxResult defaultResult, String cancelContent, String confirmContent, String yesContent, String noContent)
   at HandyControl.Controls.MessageBox.<>c__DisplayClass44_0.<Ask>b__0()
   at System.Windows.Threading.Dispatcher.Invoke(Action callback, DispatcherPriority priority, CancellationToken cancellationToken, TimeSpan timeout)
   at System.Windows.Threading.Dispatcher.Invoke(Action callback)
   at HandyControl.Controls.MessageBox.Ask(String messageBoxText, String caption)
   at demo.ViewModels.MainWindowViewModel.DeleteIconsMethod() in C:\Users\myusername\source\repos\demo\demo\ViewModels\MainWindowViewModel.cs:line 441
   at Prism.Commands.DelegateCommand.Execute()
   at Prism.Commands.DelegateCommand.Execute(Object parameter)
   at Prism.Commands.DelegateCommandBase.System.Windows.Input.ICommand.Execute(Object parameter)
   at MS.Internal.Commands.CommandHelpers.CriticalExecuteCommandSource(ICommandSource commandSource, Boolean userInitiated)
   at System.Windows.Controls.MenuItem.InvokeClickAfterRender(Object arg)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.DispatcherOperation.InvokeImpl()
   at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)

image

DineshSolanki avatar Jul 18 '20 16:07 DineshSolanki

@ghost1372 can you reproduce this problem?

NaBian avatar Aug 04 '20 12:08 NaBian

@NaBian I tried this over and over again, but nothing happened. anyway I will do this again

@DineshSolanki Please upload your example. It may be related to other code in your project

ghost1372 avatar Aug 04 '20 13:08 ghost1372

@NaBian @ghost1372 sorry, I forgot to follow up, I noticed that after removing Notification.Show() from my code, the exception disappeared somehow.I think that should be the culprit. As my app was not in version control at that time, I don't have the old code. Just before the messageBox, I used to show the notification.see if it helps, else I'll also try to reproduce again.

DineshSolanki avatar Aug 04 '20 13:08 DineshSolanki

I tried showing notification again, and it was still working, tried many times, couldn't reproduce, don't know what caused it. We should close this issue for now.

DineshSolanki avatar Aug 09 '20 13:08 DineshSolanki

Hey, sorry to bother again but while updating the same program today, The exception reappeared multiple times. It's happening with the message as well as growinfo - here's the stackTrace -

   at HandyControl.Controls.Window..ctor()
   at HandyControl.Controls.MessageBox..ctor()
   at HandyControl.Controls.MessageBox.CreateMessageBox(Window owner, String messageBoxText, String caption, MessageBoxButton button, MessageBoxImage icon, MessageBoxResult defaultResult, String cancelContent, String confirmContent, String yesContent, String noContent)
   at HandyControl.Controls.MessageBox.<>c__DisplayClass44_0.<Ask>b__0()
   at System.Windows.Threading.Dispatcher.Invoke(Action callback, DispatcherPriority priority, CancellationToken cancellationToken, TimeSpan timeout)
   at System.Windows.Threading.Dispatcher.Invoke(Action callback)
   at HandyControl.Controls.MessageBox.Ask(String messageBoxText, String caption)
   at FoliCon.ViewModels.MainWindowViewModel.DeleteIconsMethod() in C:\Users\Drona\source\repos\FoliCon\FoliCon\ViewModels\MainWindowViewModel.cs:line 476
   at Prism.Commands.DelegateCommand.Execute()
   at Prism.Commands.DelegateCommand.Execute(Object parameter)
   at Prism.Commands.DelegateCommandBase.System.Windows.Input.ICommand.Execute(Object parameter)
   at MS.Internal.Commands.CommandHelpers.CriticalExecuteCommandSource(ICommandSource commandSource, Boolean userInitiated)
   at System.Windows.Controls.MenuItem.InvokeClickAfterRender(Object arg)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.DispatcherOperation.InvokeImpl()
   at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
  Name Value Type
$exception {"The type initializer for 'HandyControl.Controls.Window' threw an exception."} System.TypeInitializationException
  ◢ InnerException {Evaluation timed out} System.Exception {System.ArgumentOutOfRangeException}
  Message "Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')" string
  ParamName "index" string
  ▶ TargetSite {Void ThrowArgumentOutOfRange_IndexException()} System.Reflection.MethodBase {System.Reflection.RuntimeMethodInfo}
  Message "The type initializer for 'HandyControl.Controls.Window' threw an exception." string
  Source "HandyControl" string
  TypeName "HandyControl.Controls.Window" string

and here's the method where it happens -

private void DeleteIconsMethod()
        {
            if (Directory.Exists(SelectedFolder))
            {
                //TODO: Replace with DialogService if efficient.
                if (MessageBox.Ask("Are you sure you want to delete all Icons?", "Confirm Icon Deletion") ==
                    System.Windows.MessageBoxResult.OK)
                {
                    Util.DeleteIconsFromPath(SelectedFolder);
                }
            }
            else
            {
                MessageBox.Error("Directory is Empty", "Empty Directory");
            }
        }

DineshSolanki avatar Nov 02 '20 11:11 DineshSolanki

@DineshSolanki Please copy Method DeleteIconsFromPath codes here

ghost1372 avatar Nov 02 '20 14:11 ghost1372

Is the problem still there? I could not recreate the problem

ghost1372 avatar Dec 24 '20 16:12 ghost1372

@ghost1372 its so random, I'm not sure what cause it or make it go away,

DineshSolanki avatar Dec 24 '20 16:12 DineshSolanki

I'll close the issue as I haven't encountered it yet again

DineshSolanki avatar May 19 '21 17:05 DineshSolanki

Hi @NaBian i have a repro, that crash with this bug here you can test it.

HandyControl-s-Project.zip

image

ghost1372 avatar Nov 10 '21 07:11 ghost1372