.NET で非同期呼び出し、つまり HttpWebRequest.BeginGetResponse を行うと想像してください。HttpWebRequest オブジェクトはより広い範囲で参照されません。ガベージ コレクターはそれを破壊し、問題を引き起こしますか?
コード例:
using System;
using System.Net;
public class AsyncHttpWebRequest
{
void Main()
{
var Request = HttpWebRequest.Create("http://www.contoso.com");
var result = Request.BeginGetResponse(GetResponseCallback, null);
}
private void GetResponseCallback(IAsyncResult AsyncResult)
{
// Do Something..
}
}
代替バージョン (リクエストが AsyncState として渡される):
using System;
using System.Net;
public class AsyncHttpWebRequest
{
void Main()
{
var Request = HttpWebRequest.Create("http://www.contoso.com");
var result = Request.BeginGetResponse(GetResponseCallback, Request);
}
private void GetResponseCallback(IAsyncResult AsyncResult)
{
// Do Something..
}
}