2

我正在尝试使用 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。

任何帮助都会非常有用

4

1 回答 1

0

WaitCallback需要状态。您可以轻松地使用 lambda 来编写:

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

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

Task.Factory.StartNew( () => dd.CountrySelectInsertUpdate());
于 2012-10-01T16:02:23.190 回答