LoginForm loginDlg = new LoginForm();
if (loginDlg.ShowDialog() == DialogResult.OK)
{
userName = loginDlg.txtUserName.Text;
loginDlg.Close();
}
txtChatContent.Focus();
Application.DoEvents();
InstanceContext site = new InstanceContext(this);//为实现服务实例的对象进行初始化
proxy = new ChatServiceClient(site);
IAsyncResult iar = proxy.BeginJoin(userName, new AsyncCallback(OnEndJoin), null);
wfDlg.ShowDialog();
}
private void OnEndJoin(IAsyncResult iar)
{
try
{
string[] list = proxy.EndJoin(iar);
HandleEndJoin(list);
}
catch (Exception e)
{
HandleEndJoinError();
}
}
/// <summary>
/// 错误提示
/// </summary>
private void HandleEndJoinError()
{
if (wfDlg.InvokeRequired)
wfDlg.Invoke(new HandleErrorDelegate(HandleEndJoinError));
else
{
wfDlg.ShowError("无法连接聊天室!");
ExitChatSession();
}
}
/// <summary>
/// 登录结束后的处理
/// </summary>
/// <param name="list"></param>
private void HandleEndJoin(string[] list)
{
if (wfDlg.InvokeRequired)
wfDlg.Invoke(new HandleDelegate(HandleEndJoin), new object[] { list });
else
{
wfDlg.Visible = false;
ShowInterChatMenuItem(false);
foreach (string name in list)
{
lbOnlineUsers.Items.Add(name);
}
AppendText(" 用户: " + userName + "--------登录---------" + DateTime.Now.ToString()+ Environment.NewLine);
}
}
/// <summary>
/// 退出聊天室
/// </summary>
private void OutInterChatMenuItem_Click(object sender, EventArgs e)
{