日期:2014-05-19  浏览次数:20853 次

线程如何调用带返回参数的方法,并返回值


private   void   btnCheeck_Click(object   sender,   System.EventArgs   e)
{
test   thr1   =   new   test();
                                                        test   thr2   =   new   test();

Thread   tid1   =   new   Thread(new   ThreadStart(thr1.CheeckNetWorke2)   );
                                                      Thread   tid2   =   new   Thread(new   ThreadStart(thr1.CheeckNetWorke)   );


tid1.Start();
                                                        tid2.Start();
}
}


public   class   test
{
public   void   CheeckNetWorke2()
{
string   IP   = "172.22.146.57 ";

string   state;

state   =RunCmd( "ping   "   +   IP).IndexOf( "TTL ")   >   0   ?   "Open ": "Close ";

MessageBox.Show(   IP   + "   Vpn状态为: "   +   state   + "\r\n ");
}

public   string   CheeckNetWorke()
{
string   Message;

string   IP   = "172.22.146.62 ";

string   state;

state   =RunCmd( "ping   "   +   IP).IndexOf( "TTL ")   >   0   ?   "Open ": "Close ";

Message   =   IP   + "   Vpn状态为: "   +   state   + "\r\n ";

return   Message;
}

private   string   RunCmd(string   Cmd)
{                        
return   p.StandardOutput.ReadToEnd();                 //從輸出流取得命令執行結果
}
}


---------------------

以上方法在执行报错误:C:\Documents   and   Settings\Administrator\桌面\Factory\NetWorkListen\MainFrom.cs(170):   方法“NetWorkListen.test.CheeckNetWorke()”与委托“void   System.Threading.ThreadStart()”不匹配

情高手出来解答下   ,或发相关资料给我~在线等

E-MAIL:ye123s@163.com    



------解决方案--------------------
kissknife(侧身向南边) 你那个上面是不 是 2.0里面才有的啊

我用的是 2003啊 ~
=================
你要的其实是返回字符串,看上面给出的网址中的第2点..不是第1点..
------解决方案--------------------
封装一下,弄成类吧
------解决方案--------------------
没看见返回值,一般情况下,线程是不允许有返回值的,你可以用全局变量来做
------解决方案--------------------
把线程所执行的方法放到一个类里,然后给类添加属性以使用在方法里能够获取或设置。
然后用线程来执行类的实例的这个方法。
------解决方案--------------------
mark
------解决方案--------------------
用全局变量啊