如何在 BeginGetRequestStream (C#) 中使用参数调用 AsyncCallback

How to call AsyncCallback with a parameter in an BeginGetRequestStream (C#)

    public void SendPost(string code)
    {
        // Create the web request object
        HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(Resource.Url);
        webRequest.Method = "POST";
        webRequest.ContentType = "application/x-www-form-urlencoded";

        //Start the request
        webRequest.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), webRequest);
    }

我想调用带参数的 GetRequestStreamCallback。

有人知道怎么做吗?

使用 lambda 而不是方法组。

即:

webRequest.BeginGetRequestStream(new AsyncCallback(result => GetRequestStreamCallback(result, someParameter)), webRequest);

使用 GetRequestStreamAsync 而不是 BeginGetRequestStream。有了它,您可以使用 async/await 关键字等待操作异步完成并继续执行:

public async Task SendPost(string code)
{
    // Create the web request object
    HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(Resource.Url);
    webRequest.Method = "POST";
    webRequest.ContentType = "application/x-www-form-urlencoded";

    //Start the request
    var stream=await webRequest.GetRequestStream(webRequest);
    MyStreamProcessingMethod(stream);
    ...
}

GetRequestStreamAsyncasync/await 在所有受支持的 .NET 版本中可用。