当前位置:  开发笔记 > 编程语言 > 正文

C#:在单独的Thread中调用[Type] .InvokeMember()方法

如何解决《C#:在单独的Thread中调用[Type].InvokeMember()方法》经验,为你挑选了1个好方法。

我正在使用此代码,我正在调用run从dll动态加载的类的List方法:

for (int i = 0; i < robotList.Count; i++)
{
    Type t = robotList[i]; //robotList is a List
    object o = Activator.CreateInstance(t);
    t.InvokeMember("run", BindingFlags.Default | BindingFlags.InvokeMethod, null, o, null);
}

invokeMember被调用run推法每一类在列表中.

现在我如何在一个单独的线程中调用此run方法invokeMember?这样我就可以为每个被调用的方法运行单独的线程.



1> Rex M..:

如果您知道所有动态加载的类型都实现了Run,那么您是否只需要它们都实现IRunable并摆脱反射部分?

Type t = robotList[i];
IRunable o = Activator.CreateInstance(t) as IRunable;
if (o != null)
{
    o.Run(); //do this in another thread of course, see below
}

如果没有,这将有效:

for (int i = 0; i < robotList.Count; i++)
{
    Type t = robotList[i];
    object o = Activator.CreateInstance(t);
    Thread thread = new Thread(delegate()
    {
        t.InvokeMember("Run", BindingFlags.Default | BindingFlags.InvokeMethod, null, o, null);
    });
    thread.Start();
}

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有