Код выполняется в отдельном потоке, вычисляет средний цвет изображения и рисует его на Control'е. При получении цвета пикселя _bmp.LockBits(new Rectangle(0, 0, _bmp.Width, _bmp.Height), ImageLockMode.ReadWrite, _bmp.PixelFormat);
выходит сообщение: System.InvalidOperationException in System.Drawing.dll В данный момент объект используется другим процессом
.
private void SomeThread()
{
//..
Thread th0 = new Thread(new ParameterizedThreadStart(TH_showArt_));
th0.Start(Puth_);
}
private void TH_showArt_(object puth_)
{
String Puth_ = puth_.ToString();
Image img64x64 = Image.FromFile(Puth_);
//..
//Считается средний цвет изображения
string[] MD_C = MPLAY.Lib.BitmapClass.Middle_RGB_str((Bitmap)img64x64).Split(';');
//..
}
public static string Middle_RGB_str(Bitmap Image_)
{
string MD_C = "0;0;0";
var bb = new BufferedBitmap(Image_);
for (int i = bb.Height - 1; i > -1; i--)
{
for (int j = bb.Width - 1; j > -1; j--)
{
//Обертка LockBits, здесь кстати и ошибка
Color clr = bb.GetPixel(i, j);
//_bmp.LockBits(
// new Rectangle(0, 0, _bmp.Width, _bmp.Height),
// ImageLockMode.ReadWrite,
// _bmp.PixelFormat
//);
//System.InvalidOperationException in System.Drawing.dll В данный момент объект используется другим процессом.
//..
}
}
//..
MD_C = avgR.ToString() + ";" + avgG.ToString() + ";" + avgB.ToString();
return MD_C;
}
Что можно сделать?
Вы параллельно используете _bmp
в каком-то еще потоке (скорее всего, в главном). Ищите, где. Bitmap
не поддерживает многопоточную работу, поэтому вам надо либо синхронизировать доступ к нему, либо работать с его копией.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Использую debug - сборку приложения, и хотел бы получить имя строки вызова и имя файлаОднако, в случае имени файла, в текущем кадре хранится значение...
Если при создание низкочастотного я использовал класс ComplexImage Мне нужно сделать что бы изображение получалось как на фильтре, только на оборот...
Всем добрый вечер! Мне нужно сделать таймер обратного отсчёта 10 минутВ форме есть кнопка button1, после нажатия кнопки запустить таймер