BackgroundWorker connectWork = new BackgroundWorker();
public FormClient()
{
connectWork.DoWork += new DoWorkEventHandler(connectWork_DoWork);
connectWork.RunWorkerCompleted += new RunWorkerCompletedEventHandler(connectWork_RunWorkerCompleted);
}
/// <summary>
/// 异步方式与服务器进行连接
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void connectWork_DoWork(object sender, DoWorkEventArgs e)
{
client = new TcpClient();
IAsyncResult result = client.BeginConnect(serverIP, 8889, null, null);
while (!result.IsCompleted)
{
Thread.Sleep(100);
AddStatus(".");
}
try
{
client.EndConnect(result);
e.Result = "success";
}
catch (Exception ex)
{
e.Result = ex.Message;
return;
}
}
/// <summary>
/// 异步方式与服务器完成连接操作后的处理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void connectWork_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Result.ToString() == "success")
{
AddStatus("连接成功");
//获取网络流
NetworkStream networkStream = client.GetStream();
//将网络流作为二进制读写对象
br = new BinaryReader(networkStream);
bw = new BinaryWriter(networkStream);
AsyncSendMessage("Login," + txt_UserName.Text);
Thread threadReceive = new Thread(new ThreadStart(ReceiveData));
threadReceive.IsBackground = true;
threadReceive.Start();
}
else
{
AddStatus("连接失败:" + e.Result);
btn_Login.Enabled = true;
}
}
private void btn_Login_Click(object sender, EventArgs e)
{
connectWork.RunWorkerAsync();
}