Правильный способ распоряжаться Image / Bitmap и PictureBox

Я пытаюсь разработать приложение для Windows Mobile 6 (в WF / C #). Существует только одна форма, и на форме есть только объект PictureBox. На нем я рисую все нужные элементы управления или все, что я хочу.

Я делаю две вещи. Рисование пользовательских форм и загрузка растровых изображений из файлов .png.

Следующая строка блокирует файл при загрузке (что является нежелательным сценарием):

Bitmap bmp = new Bitmap("file.png");

Поэтому я использую другой способ загрузки растрового изображения.

public static Bitmap LoadBitmap(string path) {
    using (Bitmap original = new Bitmap(path))
    {
        return new Bitmap(original);
    }
}

Я полагаю, это намного медленнее, но я не знаю лучшего способа загрузить изображение, быстро снимая блокировку файла.

Теперь при рисовании изображения есть метод, который я использую:

public void Draw() {
    Bitmap bmp = new Bitmap(240,320);
    Graphics g = Graphics.FromImage(bmp);

    // draw something with Graphics here.
    g.Clear(Color.Black);
    g.DrawImage(Images.CloseIcon, 16, 48);
    g.DrawImage(Images.RefreshIcon, 46, 48);
    g.FillRectangle(new SolidBrush(Color.Black), 0, 100, 240, 103);

    pictureBox.Image = bmp; 
}

Однако это, похоже, утечка памяти. И если я продолжаю делать это слишком долго, приложение в конечном итоге падает.

Поэтому у меня есть 3 вопроса:

1.) Каков наилучший способ загрузки растровых изображений из файлов без блокировки файла?

2.) Какие объекты должны быть расположены вручную в функции Draw () (и в каком порядке), чтобы не было утечки памяти и не создавалось исключение ObjectDisposedException?

3.) Если для pictureBox.Image задано значение bmp, как в последней строке кода, будет ли pictureBox.Image.Dispose () распоряжаться только ресурсами, связанными с поддержанием pictureBox.Image или установленным для него базовым растровым изображением?

Ответы на вопрос(2)

Ваш ответ на вопрос