我开始这样的话:
ThreadPool.QueueUserWorkItem(new WaitCallback(SetupThread), (object)new object[] { IP, lc });
使用该对象来调用参数。 IP很容易恢复,但lc是一个列表。我怎么能接受这个论点?
private void SetupThread(object obj)
{
object[] arg = obj as object[];
String IPadress = Convert.ToString(arg[0]);
List<String> listcom = arg[1];
theNDDssh.RunListCom(IPadress,
listcom,
sshqueue,
error
);
编译器说有明确的转换。 arg [1]无法隐式转换。
答案 0 :(得分:2)
List<string> listcom = (List<string>)arg[1];
它是一个简单的演员。您可以使用第一个参数而不是转换调用执行相同的操作。
答案 1 :(得分:0)
或者,您可以使用Tuple<T,T>
:
ThreadPool.QueueUserWorkItem(new WaitCallback(SetupThread), Tuple.Create(IP, lc));
将其强制转换回目标方法,然后只访问其中的每个项目:
private void SetupThread(object obj)
{
var args = (Tuple<string, List<string>>)obj;
String IPadress = args.Item1;
List<String> listcom = args.Item2;
...
答案 2 :(得分:0)
您需要将其转换为
(List<String>)