110,534
社区成员
发帖
与我相关
我的任务
分享
class A
{
Timer t;
A(int port)
{
this.Port = port;
t = new Timer(x =>
{
if (this.Stream == null)
Connect();
else
{
t.Dispose();
t = null;
}
}, null, 0, 60000);
}
public int Port;
public NetworkStream Stream;
public event Action 连接好啦;
void Connect()
{
//..............
}
}
这样一个对象被创建时,它一瞬间就“结束了”实例化过程,而不是在那里死循环。当连接成功时,它自然就会设置好 Stream 属性(不为 null 了),并且抛出事件通知;当超时时,它自然就会去重连。
总之,异步是不阻塞的。初学者总是用死循环、阻塞的方式来模拟异步,这就好像把脑袋放到地上,是一种刚学时最长见的问题,说明还没有学好这方面设计知识。