C#创建动态类并在Threadpool中使用它

时间:2012-10-01 15:58:17

标签: c#-4.0

我正在尝试使用system.dynamic在运行时创建类的动态实例。并将其传递给线程池来执行它。但是,我收到一个错误,说该类中的方法被用作属性。以下是代码。

Type t = Type.GetType("clsCountrySelectInsertUpdate_TEST");
dynamic dd = Activator.CreateInstance(t, null);
dd.intMode = 203;
ThreadPool.QueueUserWorkItem(new WaitCallback(dd.CountrySelectInsertUpdate));

我也尝试在线程池中调用该方法,如下所示,但是收到错误,指出无法从方法CountrySelectInsertUpdate转换返回类型void。

ThreadPool.QueueUserWorkItem(new WaitCallback(dd.CountrySelectInsertUpdate()),null);

方法CountrySelectInsertUpdate()不接受参数并返回void。

任何帮助都会很明显

1 个答案:

答案 0 :(得分:0)

WaitCallback需要州。您可以轻松地使用lambda来写这个:

ThreadPool.QueueUserWorkItem(new WaitCallback(state => dd.CountrySelectInsertUpdate()), null);

话虽如此,因为您已经在使用.NET 4,我建议使用TPL。它提供了比ThreadPool.QueueUserWorkItem更好的线程模型,特别是如果您以后需要获取结果(或处理异常):

Task.Factory.StartNew( () => dd.CountrySelectInsertUpdate());