Hi how do i call System.Reflection.MethodInfo.Invoke() with paramters with threads.
For instance..
Say I have a method that allows you to pass in a string that represents a class name and calls corresponding class method dynamically , now i want to call this Methodinfo.invoke with threads ,I have no idea how to do this since i am calling invoke with paramter . Code snippet given meblow . Thank you for your help
Type classType = objAssembly.GetType("MyClassName");
object obj = Activator.CreateInstance(classType)
bject[] _objval = new object[3];
object[] parameters = new object[] { _objval };
MethodInfo mi = classType.GetMethod("MyMethod");
mi.Invoke(obj, parameters); // <---**How do i call this with threads.. ????**
You can start a thread with an anonymous method:
The code inside the
delegate() { ... }
is an anonymous method that is executed on the new thread.Since you're wanting to create a new thread with
System.Threading.Thread
rather than make the call on an existing UI thread or threadpool thread, first thing to notice is that withSystem.Threading.Thread
you can use either aThreadStart
orParameterizedThreadStart
delegate.You do want parameters to your thread's main method, but
ParameterizedThreadStart
only allows anobject
, which forces you to cast it to the required type. So we'll just use a closure to get all the arguments passed across in a type-safe way.Example usage:
If you're working with .NET 2.0, then take out the keyword
this
from the parameter list and call like:This will discard any return value, but so did the unthreaded example in your question. If you need the return value leave a comment.
Just a suggestion, why not use .Net 4.0 Framework it has an easier threading implementation. Just use Parallel.For, Parallel.ForEach() or Parallel.Invoke(). Some further explanation here -> http://anyrest.wordpress.com/2010/09/09/parallel-programming-easier-than-ever-using-net-framework-4/