第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何異步使用HttpWebRequest(.NET)?

如何異步使用HttpWebRequest(.NET)?

森林海 2019-07-09 10:32:49
如何異步使用HttpWebRequest(.NET)?如何異步使用HttpWebRequest(.NET,C#)?
查看完整描述

3 回答

?
莫回?zé)o

TA貢獻1865條經(jīng)驗 獲得超7個贊

使用HttpWebRequest.BeginGetResponse()

HttpWebRequest webRequest;void StartWebRequest(){
    webRequest.BeginGetResponse(new AsyncCallback(FinishWebRequest), null);}void FinishWebRequest(IAsyncResult result){
    webRequest.EndGetResponse(result);}

異步操作完成后調(diào)用回調(diào)函數(shù)。你至少得打個電話EndGetResponse()從這個功能。


查看完整回答
反對 回復(fù) 2019-07-09
?
慕慕森

TA貢獻1856條經(jīng)驗 獲得超17個贊

考慮到答案:

HttpWebRequest webRequest;void StartWebRequest(){
    webRequest.BeginGetResponse(new AsyncCallback(FinishWebRequest), null);}void FinishWebRequest(IAsyncResult result){
    webRequest.EndGetResponse(result);}

您可以發(fā)送請求指針或類似于以下內(nèi)容的任何其他對象:

void StartWebRequest(){
    HttpWebRequest webRequest = ...;
    webRequest.BeginGetResponse(new AsyncCallback(FinishWebRequest), webRequest);}void FinishWebRequest(IAsyncResult result){
    HttpWebResponse response = (result.AsyncState as HttpWebRequest).EndGetResponse(result) as HttpWebResponse;}

問候


查看完整回答
反對 回復(fù) 2019-07-09
?
弒天下

TA貢獻1818條經(jīng)驗 獲得超8個贊

到目前為止,每個人都錯了,因為BeginGetResponse()在當(dāng)前線程上做一些工作。從文獻資料:

在此方法成為異步之前,BeginGetResponse方法需要完成一些同步設(shè)置任務(wù)(例如DNS解析、代理檢測和TCP套接字連接)。因此,不應(yīng)在用戶界面(UI)線程上調(diào)用此方法,因為在引發(fā)錯誤或該方法成功之前,可能需要相當(dāng)長的時間(取決于網(wǎng)絡(luò)設(shè)置)來完成初始的同步設(shè)置任務(wù)。

因此,要正確地做到這一點:

void DoWithResponse(HttpWebRequest request, Action<HttpWebResponse> responseAction){
    Action wrapperAction = () =>
    {
        request.BeginGetResponse(new AsyncCallback((iar) =>
        {
            var response = (HttpWebResponse)((HttpWebRequest)iar.AsyncState).EndGetResponse(iar);
            responseAction(response);
        }), request);
    };
    wrapperAction.BeginInvoke(new AsyncCallback((iar) =>
    {
        var action = (Action)iar.AsyncState;
        action.EndInvoke(iar);
    }), wrapperAction);}

然后,您可以對響應(yīng)進行所需的操作。例如:

HttpWebRequest request;// init your request...then:DoWithResponse(request, (response) => {
    var body = new StreamReader(response.GetResponseStream()).ReadToEnd();
    Console.Write(body);});


查看完整回答
反對 回復(fù) 2019-07-09
  • 3 回答
  • 0 關(guān)注
  • 1657 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號