C#2005 类中的回调函数问题

来源:百度知道 编辑:UC知道 时间:2024/06/26 05:31:56
我的C#程序中,有关于socket类的异步操作的过程。
例如:
myTcpClient.beginConnect(127.0.0.1,7000, OnConnect, myTcpClient)

如果在form类中,完成这些操作,一点问题都没有。
但是如果把mytcpclient、void OnConnect()等等封装到另一个类里面,上面的语句就无法调用到OnConnect()。也不报错,就只是不执行OnConnect()。

问高人应当如何解决?如有解决方法,我还想把这个类单独封装成dll,可以办到吗?
问题重新表述:
例如我有一个Form类和一个Tel类(自定义)。

Tel类中,有方法
Class Tel
{
public void Connect()
{
TcpClient.beginConnect(ip,port,OnConnect,TcpClient)
}
public void OnConnect
{
……
}
}
以上这两个方法表示TCP客户端向服务器发起连接,连接成功则调用OnConnect回调函数。
这两个方法若放在Form类下,一切正常,能连接,也能运行OnConnect。
但如果封装在Tel类中,并在Form类中调用Tel.Connect()则没有连接,OnConnect也不被运行。
问高手如何解决?其解决办法是否也适用于把Tel类做成.dll来调用?

在form类中设置断点表明,
程序经过了 Tel.Connect() 这句;
也经过了 TcpClient.beginConnect(ip,port,OnConnect,TcpClient) 这句

但是上面这句执行了就没了,程序没有经过OnConnect中的语句。

估计应该只是回调函数这方面的问题。

类.OnConnect
类.mytcpclient

你可以采用类来调用:
如:类.OnConnect或者是类.mytcpclient
到C#编程论坛问问,那里有比我讲的更详细的

定义一个委托对象就行了。