gpt4 book ai didi

c# - HttpWebRequest.BeginGetResponse

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

我需要对 Web 资源发出异步请求并使用此页面 (link to full example) 中的示例:

HttpWebRequest myHttpWebRequest= (HttpWebRequest)WebRequest.Create("http://www.contoso.com");
RequestState myRequestState = new RequestState();
myRequestState.request = myHttpWebRequest;
// Start the asynchronous request.
IAsyncResult result=
(IAsyncResult) myHttpWebRequest.BeginGetResponse(new AsyncCallback(RespCallback),myRequestState);

但是当我测试应用程序时,此代码的最后一行执行卡住(2-3 秒)(我可以使用调试器观看它)。

为什么?是我的错误还是函数的标准行为?

最佳答案

你可以试试,我相信那更好

private void StartWebRequest(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.BeginGetResponse(new AsyncCallback(FinishWebRequest), request);
}

private void FinishWebRequest(IAsyncResult result)
{
HttpWebResponse response = (result.AsyncState as HttpWebRequest).EndGetResponse(result) as HttpWebResponse;
}

因为文本框值的跨线程,但这是 wpf 应用程序,我会重新标记它,顺便说一句,你可以使用 webclient 之类的

 private void tbWord_TextChanged(object sender, TextChangedEventArgs e)
{
WebClient wc = new WebClient();
wc.DownloadStringCompleted += HttpsCompleted;
wc.DownloadStringAsync(new Uri("http://en.wikipedia.org/w/api.php?action=opensearch&search=" + tbWord.Text));
}
private void HttpsCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
{

//do what ever
//with using e.Result
}
}

关于c# - HttpWebRequest.BeginGetResponse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9373768/

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