c# - Calling Windows Form Show() method using reflection crash -


i have following class (exposed com) using wrapper show forms called vb6.

public class netform : inetform {     public netform(assembly assembly, string name, object[] parameters)     {         assembly = assembly;         name = name;         createinstance(parameters);     }      private assembly assembly { get; set; }     private string name { get; set; }     private form instance { get; set; }      private void createinstance(object[] parameters)     {         type type = assembly.gettype(name);         type[] types = new type[parameters.length];         (int idx = 0; idx < parameters.length; idx++)             types[idx] = parameters[idx].gettype();          constructorinfo ci = type.getconstructor(types);         instance = (form)ci.invoke(parameters);     }     public void show()     {         instance.visible = true;         instance.show();       // crashing     }     public void showdialog()     {         instance.showdialog();  // works     } }  public class netassembly {     public netassembly(string fullname)     {         init(fullname);     }      private assembly assembly { get; set; }      private void init(string name)     {         assembly = assembly.loadfrom(name);                 }      public netform getform(string namespace, string name, object[] parameters)     {         name = string.concat(namespace, ".", name);         return new netform(assembly, name,parameters);     } } 
  1. showdialog() works perfectly.
  2. show() not being displayed if visible property not set true. when setting true, form partially being displayed , crash after few seconds.

i using unittestproject check it:

[testclass] public class netformunittest {     [testmethod]     public void showtestmethod()     {         var assembly = new netassembly(assemblyfullname);         var form = assembly.getform(namespace, formname, new object[] { "item1" });         form.show();     } } 

what correct way call show() method?

your form needs message pump (like application.run creates). reason showdialog creates own message loop.

so adding application.run(forminstance) should solve problem.


Comments

Popular posts from this blog

Sort a complex associative array in PHP -

vb.net - How to ignore if a cell is empty nothing -

recursion - Can every recursive algorithm be improved with dynamic programming? -