ファイルからロードする画像の一部に画像処理を行っています。私は、ロード、実行、および保存機能を持つクラスを持っています。私は常にロードとメインスレッドのシリアルで保存しますが、私は別のイメージで実行呼び出しをスレッドしています。私がスレッドを実行すると、保存が失敗します。もしスレッドが実行されなければ、それは動作します。私は画像を読み込んで3回クローンし、それらを変更してすべて保存します。保存されたファイル名がにロードされ、元の画像と同じではありませんスレッド処理後のGDI +ビットマップの保存
これは動作します。
ProcessImage process1 = ProcessImage(L"IMG_1");
process1.Load();
process1.Execute();
process1.Save();
これにはない:画像::保存GdipSaveImageToFileで
ProcessImage process1 = ProcessImage(L"IMG_1");
process1.Load();
thread t1(&ProcessImage::Execute, process1);
t1.join();
process1.Save(); //exception
例外:
読み取りアクセス違反。 0xCCCCCCCCでした。機能を保存するマイ
は次のようになります。
void Save() {
CLSID pngClsid;
CLSIDFromString(L"{557CF406-1A04-11D3-9A73-0000F81EF32E}", &pngClsid);
destBright->Save(brightenOut.c_str(), &pngClsid); //exception
delete destBright;
//same again on 2 other Bitmaps
}
destBrightがビットマップへのポインタであるProcessImageのプライベートメンバです。
ありがとうございました。必要に応じてより多くのコードを提供することができます。