|
楼主 |
发表于 2023-5-10 18:17:38
|
显示全部楼层
自己解决了
1、HttpResult 类里加
/// <summary>
/// 返回AsyncState自定义状态
/// </summary>
public string AsyncState { get; set; }
2、下面方法里传入自定义参数 b
/// <summary>
/// GetHtml方法的异步调用方式,根据相传入的数据,得到相应页面数据
/// </summary>
/// <param name="item">参数类对象</param>
/// <param name="resultMainName">回调的方法名</param>
/// <param name="b">自定义参数</param>
public void BeginInvokeGetHtml(HttpItem item, ResultHandler resultMainName,string b) {
resultheadler = resultMainName;
GethtmlHandler handler = new GethtmlHandler(GetHtml);
handler.BeginInvoke(item, new AsyncCallback(CallbackFunc), b);
}
3、内部回调方法加
/// <summary>
/// 内部回调方法
/// </summary>
/// <param name="resultType">返回值</param>
private void CallbackFunc(IAsyncResult resultType) {
//result 是“加法类.Add()方法”的返回值
//AsyncResult 是IAsyncResult接口的一个实现类,引用空间:System.Runtime.Remoting.Messaging
//AsyncDelegate 属性可以强制转换为用户定义的委托的实际类。
GethtmlHandler handler = (GethtmlHandler)((AsyncResult)resultType).AsyncDelegate;
HttpResult result = handler.EndInvoke(resultType);
//用户传入的自定义参数 随result返回
result.AsyncState = (string)resultType.AsyncState;
//回调方法传回执行结果
resultheadler.Invoke(result);
}
4、接收返回 var asyncState = result.AsyncState;
|
|