C# Listen线程监听J2EE应用服务器指令强行关闭客户端

之前完成的一个以C#客户端通过Hessian调用Java服务的企业信息化项目,要求当web应用重新发布或者应用服务器重启时需告知所有客户端:由于什么原因(message),应用服务器将在多久(time)之后重启,请所有用户在多久之内做好数据保存工作,客户端将在多久之后强行退出。这里有2中实现方式:

1) 推的模式,服务器发消息通知所有客户端;

2) 拉的模式,客户端去监听服务器消息,服务器是否要重启;

相对来说2)的实现方式更简单,于是本案采用了2),为此需要在客户端开设一个Listen线程,用以监听应用服务器是否要重启。通常来说C#客户端应用,从启动到进入主窗口作业区有3个过程:

1) program引导;

2) login窗体,登录处理;

3) 进入main窗体,进行各种具体应用操作;

为此,建议在login窗体登录成功后,就启动ListenThread线程。

public class ListenThread

{

private static int count = 5*60*1000;

//

public static void ForceClosed()

{

ForceClosed(count);

}

//private static int count = 0;

public static void ForceClosed(Object para)

{

count = (int)para;

boolean listen = true;

while(listen){

if(应用服务器是否要重启){

listen = false;

}

Thread.Sleep(count);

}

强行关闭客户端

}

}

///

登录成功之后,启动ListenThread线程

//启动相关服务线程

Thread listenThread = new Thread(new ParameterizedThreadStart(ListenThread.ForceClosed));

listenThread.Start(5 * 60 * 1000);

为了友好起见,当ListenThread监听到应用服务器将要重启,执行强行关闭客户端操作的时候,最好能弹出一个对话框窗体(toplevel=true),显示下述信息:

1) 重启原因;

2) 数据保存提示;

3) 时间提示:多久之后客户端要强行关闭,多久之后用户可继续使用;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值