Я хотел бы вызвать HttpWebRequest в другом потоке как пользовательский интерфейс, потому что я должен сделать 200 запросов или сервер и загруженный образ.
Мой сценарий - сделать запрос на сервере, создать изображение и вернуть изображение. Это я делаю в другой ветке. Я использую класс Task, но он автоматически вызывает метод Dispose для всех объектов, созданных в области задач. Поэтому я возвращаю нулевой объект из этого метода.
public BitmapImage CreateAvatar(Uri imageUri, int sex)
{
if (imageUri == null)
return CreateDefaultAvatar(sex);
BitmapImage image = null;
new Task(() =>
{
var request = WebRequest.Create(imageUri);
var response = request.GetResponse();
using (var stream = response.GetResponseStream())
{
Byte[] buffer = new Byte[response.ContentLength];
int offset = 0, actuallyRead = 0;
do
{
actuallyRead = stream.Read(buffer, offset, buffer.Length - offset);
offset += actuallyRead;
} while (actuallyRead > 0);
image = new BitmapImage
{
CreateOptions = BitmapCreateOptions.None,
CacheOption = BitmapCacheOption.OnLoad
};
image.BeginInit();
image.StreamSource = new MemoryStream(buffer);
image.EndInit();
image.Freeze();
}
}).Start();
return image;
}
Как избежать этого? Спасибо