你基本上有两种选择。要么同步调用MethodInfo.Invoke并等待结果。或者你设置了一个回调方法,在调用完成后调用。从您链接到例如扩展:
public void InvokeOnNewThread(MethodInfo mi, object target, Action<object> callback, params object[] parameters)
{
ThreadStart threadMain = delegate()
{
var res = mi.Invoke(target, parameters);
if(callback != null)
callback(res);
};
new System.Threading.Thread(threadMain).Start();
}
我增加了一个额外的参数,这需要委托时,调用完成后,将被调用。 然后你可以这样使用它:
void Main()
{
var test = new Test();
var mi = test.GetType().GetMethod("Hello");
InvokeOnNewThread(mi, test, GetResult);
Thread.Sleep(1000);
}
public void GetResult(object obj)
{
Console.WriteLine(obj);
}
当前线程在等待方法调用的答案时应该做什么? – sisve 2011-01-25 16:00:33