我正在尝试使用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。
任何帮助都会很明显
答案 0 :(得分:0)
WaitCallback需要州。您可以轻松地使用lambda来写这个:
ThreadPool.QueueUserWorkItem(new WaitCallback(state => dd.CountrySelectInsertUpdate()), null);
话虽如此,因为您已经在使用.NET 4,我建议使用TPL。它提供了比ThreadPool.QueueUserWorkItem
更好的线程模型,特别是如果您以后需要获取结果(或处理异常):
Task.Factory.StartNew( () => dd.CountrySelectInsertUpdate());