作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
如何将 IAsyncResult 以外的内容传递给 AsyncCallback?
示例代码:
//Usage
var req = (HttpWebRequest)iAreq;
req.BeginGetResponse(new AsyncCallback(iEndGetResponse), req);
//Method
private void iEndGetResponse(IAsyncResult iA, bool iWantInToo) { /*...*/ }
我想传入示例变量 bool iWantInToo
。我不知道如何将其添加到 new AsyncCallback(iEndGetResponse)
。
最佳答案
您必须使用对象状态来传递它。现在,您正在传递 req
参数 - 但您可以传递包含它和 bool 值的对象值(value)。
例如(使用 .NET 4 的元组 - 如果您使用的是 .NET <=3.5,您可以使用自定义类或 KeyValuePair 或类似的):
var req = (HttpWebRequest)iAreq;
bool iWantInToo = true;
req.BeginGetResponse(new AsyncCallback(iEndGetResponse), Tuple.Create(req, iWantInToo));
//Method
private void iEndGetResponse(IAsyncResult iA)
{
Tuple<HttpWebRequest, bool> state = (Tuple<HttpWebRequest, bool>)iA.AsyncState;
bool iWantInToo = state.Item2;
// use values..
}
关于C# 如何将不仅仅是 IAsyncResult 传递给 AsyncCallback?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5625501/
我是一名优秀的程序员,十分优秀!