XNA Texture2D Dispose () + ObjectDisposedException - PullRequest
2 голосов
/ 20 июля 2010

Я очень новичок в платформе XNA. Я пишу пример приложения в XNA для Windows Phone 7.

В настоящее время я столкнулся с проблемой.

В этом примере я загружаю Texture2D и располагаю его в следующей строке и присваиваю ему значение null. Я снова загружаю одно и то же изображение в ту же переменную-член. Но в розыгрыше я получаю ObjectDisposedException.

Если я удалю вызов dispose, он не выдаст никаких исключений.

Пожалуйста, помогите мне решить эту проблему.

Пример:

Texture2D texture = null;
 protected override void LoadContent()
 {
      texture = Content.Load<Texture2D>("Back");
      texture .Dispose();
      texture = null;

      texture = Content.Load<Texture2D>("Back");
}


protected override void Draw(GameTime gameTime)
{
      GraphicsDevice.Clear(Color.CornflowerBlue);

      spriteBatch.Begin();
      spriteBatch.Draw(texture , new Vector2(0, 0), Color.White);

      spriteBatch.End();

       base.Draw(gameTime);
}

1 Ответ

7 голосов
/ 22 июля 2010

ContentManager, который вы используете, автоматически управляет временем жизни активов. Он кэширует текстуру «Назад» после первого вызова и возвращает тот же экземпляр во второй раз, когда вы запрашиваете его. К сожалению, вы попросили Текстуру удалить себя, чтобы она больше не использовалась.

Вы можете использовать Content.Unload для удаления текстуры из памяти.

...