ブログ

割とコンピュータよりの情報をお届けします。

.NET FrameworkのBitmapの生成に注意

Bitmap img = new Bitmap(…を使っているときに注意があった。

最近見ているプログラムで暫く使用していると例外が発生してしまう問題が発生していた。

よくよく調べていると、例えば以下のようなコードではたいてい失敗する。(そのままのコードではない)
頻繁にGC.collectを実行しているとうまく行くことがある。

img = new Bitmap(****で作ったオブジェクトは使い終わったらimg.Dispose()で開放するか使いまわさなければ、失敗するようだ。(または、例外処理を加えて開放されるのを待つか。)

本当は.NET Compact Frameworkで悩んでいたが、デスクトップPC(フルバージョンの.NET Framework)でも動かなかった。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;

namespace img
{
    class Program
    {
        static void Main(string[] args)
        {
            Bitmap img = new Bitmap(400, 300);
            for (int i = 0; i < 20000; i++)
            {
                img = new Bitmap(400, 300);
            }
        }
    }
}
2018/04/10 コンピュータ   TakeMe
< 前の記事     一覧へ     後の記事 >

コメント送信フォーム


※ Eメールは公開されません
Loading...
 画像の文字を入力してください