我一直在浏览网站上的其他问题,并找到了这篇文章。
Ben Voigts 的回答非常有用,我相信我可以在我的系统中使用它。
我遇到的问题是,在某些情况下,我需要从方法调用中返回一个值。
我本来打算对该帖子发表评论,但我的代表还不够高,无法发表评论。
希望 Ben 会看到这篇文章,或者其他人能够扩展他的答案以包括如何返回值。
如果您需要任何其他信息,请告诉我。
亲切的问候
灰
我一直在浏览网站上的其他问题,并找到了这篇文章。
Ben Voigts 的回答非常有用,我相信我可以在我的系统中使用它。
我遇到的问题是,在某些情况下,我需要从方法调用中返回一个值。
我本来打算对该帖子发表评论,但我的代表还不够高,无法发表评论。
希望 Ben 会看到这篇文章,或者其他人能够扩展他的答案以包括如何返回值。
如果您需要任何其他信息,请告诉我。
亲切的问候
灰
你基本上有两个选择。您可以同步调用 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);
}