1

以下に示すコードと同じ概念で開始して応答を取得するタスクを作成する他の方法は何ですか: (.Net 4を使用)

var uri = new Uri(website.SiteUrl);
var myReq = (HttpWebRequest)WebRequest.Create(uri);

var task = Task<WebResponse>.Factory.FromAsync(
                myReq.BeginGetResponse,
                myReq.EndGetResponse,
                null);
4

1 に答える 1

4

.Net 4.5 を使用している場合

var task = myReq.GetResponseAsync();

.Net 4.0の場合、次のように書くことができます

public Task<HttpWebResponse> GetAsync(HttpWebRequest req)
{
    var tcs = new TaskCompletionSource<HttpWebResponse>();
    req.BeginGetResponse(e =>
        {
            if(e.IsCompleted)
                tcs.TrySetResult((HttpWebResponse)req.EndGetResponse(e));
        }, null);
    return tcs.Task;
}

しかし、あなたの現在のコードよりも優れたものはありません。

于 2013-08-26T13:33:20.800 に答える