你基本上有兩種選擇。要麼同步調用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