gpt4 book ai didi

C# 如何将不仅仅是 IAsyncResult 传递给 AsyncCallback?

转载 作者:太空狗 更新时间:2023-10-29 22:20:31 24 4
gpt4 key购买 nike

如何将 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com