InvalidOperationException - объект в настоящее время используется в другом месте - красный крест

Функция.prototype.bind () - это способ привязать целевую функцию к определенной области и необязательно определить объект this в целевой функции.

someObj.addEventListener("click", some_function.bind(this), false);

Или для захвата некоторых лексических областей, например, в цикле:

someObj.addEventListener("click", some_function.bind(this, arg1, arg2), false);

Наконец, если параметр this не нужен в целевой функции:

someObj.addEventListener("click", some_function.bind(null, arg1, arg2), false);

30
задан 6 January 2013 в 02:36
поделиться

2 ответа

Это потому, что класс Gdi + Image не является потокобезопасным. Но вы можете избежать InvalidOperationException, используя блокировку каждый раз, когда вам нужен доступ к изображению, например, для рисования или получения размера изображения:

Image DummyImage;

// Paint
lock (DummyImage)
    e.Graphics.DrawImage(DummyImage, 10, 10);

// Access Image properties
Size ImageSize;
lock (DummyImage)
    ImageSize = DummyImage.Size;

Кстати, вызов не требуется, если вы будете использовать вышеуказанный шаблон.

20
ответ дан 28 November 2019 в 00:23
поделиться

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

0
ответ дан 28 November 2019 в 00:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: