同事写的异步调用网络编程
这里只是做个备份:
...{
if (CmbServer.Text == "")
...{
return;
}
BtnSearch.Enabled = false;
this.RoleInfoView.DataSource = null;
Enum.Message_Body[] mContent = new Enum.Message_Body[3];
mContent[0].eName = Enum.TagName.FJ_UserID;
mContent[0].eFormat = Enum.TagFormat.TLV_STRING;
mContent[0].oContent = TxtAccount.Text;
mContent[1].eName = Enum.TagName.FJ_ServerIP;
mContent[1].eFormat = Enum.TagFormat.TLV_STRING;
mContent[1].oContent = Operation_FJ.GetItemAddr(mServerInfo, CmbServer.Text);
mContent[2].eName = Enum.TagName.ServerInfo_City;
mContent[2].eFormat = Enum.TagFormat.TLV_STRING;
mContent[2].oContent = CmbServer.Text;
查询角色信息#region 查询角色信息
ThreadTesk.Task th_Tesk_Search = new ThreadTesk.Task(SearchGMUser, this);
th_Tesk_Search.StartTask(new ThreadTesk.DelegateGetResult(op_FJ.GetResult), Enum.ServiceKey.FJ_GMUser_Query, mContent);
#endregion
}
查询角色信息#region 查询角色信息
void SearchGMUser(Enum.Message_Body[,] mResult)
...{
BtnSearch.Enabled = true;
if (mResult[0, 0].eName == Enum.TagName.ERROR_Msg)
...{
MessageBox.Show(mResult[0, 0].oContent.ToString());
return;
}
Operation_FJ.BuildDataTable(this.m_ClientEvent, mResult, RoleInfoView, out iPageCount);
}
#endregion
if (CmbServer.Text == "")
...{
return;
}
BtnSearch.Enabled = false;
this.RoleInfoView.DataSource = null;
Enum.Message_Body[] mContent = new Enum.Message_Body[3];
mContent[0].eName = Enum.TagName.FJ_UserID;
mContent[0].eFormat = Enum.TagFormat.TLV_STRING;
mContent[0].oContent = TxtAccount.Text;
mContent[1].eName = Enum.TagName.FJ_ServerIP;
mContent[1].eFormat = Enum.TagFormat.TLV_STRING;
mContent[1].oContent = Operation_FJ.GetItemAddr(mServerInfo, CmbServer.Text);
mContent[2].eName = Enum.TagName.ServerInfo_City;
mContent[2].eFormat = Enum.TagFormat.TLV_STRING;
mContent[2].oContent = CmbServer.Text;
查询角色信息#region 查询角色信息
ThreadTesk.Task th_Tesk_Search = new ThreadTesk.Task(SearchGMUser, this);
th_Tesk_Search.StartTask(new ThreadTesk.DelegateGetResult(op_FJ.GetResult), Enum.ServiceKey.FJ_GMUser_Query, mContent);
#endregion
}
查询角色信息#region 查询角色信息
void SearchGMUser(Enum.Message_Body[,] mResult)
...{
BtnSearch.Enabled = true;
if (mResult[0, 0].eName == Enum.TagName.ERROR_Msg)
...{
MessageBox.Show(mResult[0, 0].oContent.ToString());
return;
}
Operation_FJ.BuildDataTable(this.m_ClientEvent, mResult, RoleInfoView, out iPageCount);
}
#endregion
ThreadTesk程序如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace ThreadTesk
...{
任务工作状态#region 任务工作状态
/**//// <summary>
/// 任务工作状态
/// </summary>
public enum TaskStatus
...{
/**//// <summary>
/// 任务没有运行,可能是工作进程没有开始、工作进程正常结束或正常取消工作进程
/// </summary>
Stopped,
/**//// <summary>
/// 任务没有运行,被调用者强行中止
/// </summary>
Aborted,
/**//// <summary>
/// 任务没有运行,在工作进程中触发错误而中止
/// </summary>
ThrowErrorStoped,
/**//// <summary>
/// 任务运行中
/// </summary>
Running,
/**//// <summary>
/// 尝试取消工作进程中
/// </summary>
CancelPending,
/**//// <summary>
/// 强行中止工作进程中
/// </summary>
AbortPending
}
#endregion
状态事件#region 状态事件
/**//// <summary>
/// 任务状态消息
/// </summary>
public class TaskEventArgs : EventArgs
...{
/**//// <summary>
/// 任务运行结果
/// </summary>
public Object Result;
/**//// <summary>
/// 任务进度(0-100)
/// </summary>
public int Progress;
/**//// <summary>
/// 任务工作状态
/// </summary>
public TaskStatus Status;
/**//// <summary>
/// 任务消息文本
/// </summary>
public String Message;
/**//// <summary>
/// 创建任务状态消息
/// </summary>
/// <param name="progress">任务进度(0-100)</param>
public TaskEventArgs(int progress)
...{
this.Progress = progress;
this.Status = TaskStatus.Running;
}
/**//// <summary>
/// 创建任务状态消息
/// </summary>
/// <param name="status">任务线程状态</param>
public TaskEventArgs(TaskStatus status)
...{
this.Status = status;
}
/**//// <summary>
/// 创建任务状态消息
/// </summary>
/// <param name="progress">任务进度(0-100)</param>
/// <param name="result">任务运行中间结果</param>
public TaskEventArgs(int progress, object result)
...{
this.Progress = progress;
this.Status = TaskStatus.Running;
this.Result = result;
}
/**//// <summary>
/// 创建任务状态消息
/// </summary>
/// <param name="status">任务线程状态</param>
/// <param name="result">任务运行结果</param>
public TaskEventArgs(TaskStatus status, object result)
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace ThreadTesk
...{
任务工作状态#region 任务工作状态
/**//// <summary>
/// 任务工作状态
/// </summary>
public enum TaskStatus
...{
/**//// <summary>
/// 任务没有运行,可能是工作进程没有开始、工作进程正常结束或正常取消工作进程
/// </summary>
Stopped,
/**//// <summary>
/// 任务没有运行,被调用者强行中止
/// </summary>
Aborted,
/**//// <summary>
/// 任务没有运行,在工作进程中触发错误而中止
/// </summary>
ThrowErrorStoped,
/**//// <summary>
/// 任务运行中
/// </summary>
Running,
/**//// <summary>
/// 尝试取消工作进程中
/// </summary>
CancelPending,
/**//// <summary>
/// 强行中止工作进程中
/// </summary>
AbortPending
}
#endregion
状态事件#region 状态事件
/**//// <summary>
/// 任务状态消息
/// </summary>
public class TaskEventArgs : EventArgs
...{
/**//// <summary>
/// 任务运行结果
/// </summary>
public Object Result;
/**//// <summary>
/// 任务进度(0-100)
/// </summary>
public int Progress;
/**//// <summary>
/// 任务工作状态
/// </summary>
public TaskStatus Status;
/**//// <summary>
/// 任务消息文本
/// </summary>
public String Message;
/**//// <summary>
/// 创建任务状态消息
/// </summary>
/// <param name="progress">任务进度(0-100)</param>
public TaskEventArgs(int progress)
...{
this.Progress = progress;
this.Status = TaskStatus.Running;
}
/**//// <summary>
/// 创建任务状态消息
/// </summary>
/// <param name="status">任务线程状态</param>
public TaskEventArgs(TaskStatus status)
...{
this.Status = status;
}
/**//// <summary>
/// 创建任务状态消息
/// </summary>
/// <param name="progress">任务进度(0-100)</param>
/// <param name="result">任务运行中间结果</param>
public TaskEventArgs(int progress, object result)
...{
this.Progress = progress;
this.Status = TaskStatus.Running;
this.Result = result;
}
/**//// <summary>
/// 创建任务状态消息
/// </summary>
/// <param name="status">任务线程状态</param>
/// <param name="result">任务运行结果</param>
public TaskEventArgs(TaskStatus status, object result)