Я использую этот PictureBox на форме, в это окно изображения Я использую код AForge. Я передаю СПРАВОЧНИК pictureBox в класс веб-камеры, который я создаю, который инициализирует веб-камеру и сообщает ей, где рисовать свои фреймы .... так что он счастливо рисует его фреймами ... нет проблем.Как пополнить безопасный вызов PictureBox.Image в C#, в настоящее время дает одну из 3 ошибок
Но определенное время (когда я хочу, чтобы сделать материал с указанным изображением, если коробка ПРОВ нажата) ... Я начинаю этот таймер с помощью простого кода:
timer1.Enabled = true;
интервала этого таймера устанавливаются в 33.
Так что теперь его обжиг вместе и каждый раз через петлю мой код имеют следующее:
private void timer1_Tick(object sender, EventArgs e)
{
...
double value = detector.ProcessFrame(new Bitmap(picCapture.Image)); //errors here
...
TimerCallback tc = new TimerCallback(sendDataFast);
System.Threading.Timer t = new System.Threading.Timer(tc, null, 2000, Timeout.Infinite);
}
эта линия выше имеет один из трех ошибок, которые я видел на нем (Stack следов где Доступны ле):
Object is currently in use elsewhere.
Out of Memory. (A first chance exception of type 'System.OutOfMemoryException' occurred in System.Drawing.dll)
Parameter not valid (A first chance exception of type 'System.ArgumentException' occurred in System.Drawing.dll)
Я уверен, эти вопросы резьб, но я понятия не имею, как иметь дело с ними ... Я полностью потерял. Если программа зависает на этой строке выше, я обычно могу снова запустить прогон в отладчике, и все хорошо. Но я не хочу быть неряшливым и просто ставить волей-неволей попытку поймать, что продолжается. Я хотел бы выяснить корень этой проблемы.
Я видел где-то еще кто-то сказал, что это может быть проблема с резьбой и поставить эту строку: System.Diagnostics.Debug.Assert (! This.InvokeRequired, " InvokeRequired ");
Итак, я сделал это в начале этого метода time1_click, но утверждение, похоже, не происходит, но я не уверен, что это было подходящее место для assert ... is timer1_click в потоке пользовательского интерфейса или нет?
Я подозреваю теперь, что я рассмотрел мой код его что-то с тем, как я инициализирует свой веб-класс:
Или в этом timer1_click я также сделать вызов этого метода:
void sendDataFast(Object stateObject)
{
EmergencyDelegate delEmergency =
new EmergencyDelegate(mic.sendDataEmergency);
// call the BeginInvoke function! //sendDataEmergency takes in a picture Image picImage as an argument.
delEmergency.BeginInvoke(picCapture.Image, null, null);
}
И для полноты это как я инициализировать мой веб-класс:
webcam = new WebCam();
webcam.InitializeWebCam(ref picCapture, ref picComparator, ref dataObject, this); //guessing this is calling threading issues
Те три ошибки, которые случаются не бывает сразу, кажется, происходит случайным образом один из трех .... LEA ds мне думать, что это проблема с потоками, но как еще я могу это исправить? создав делегата по какой-либо причине, который возвращает это двойное значение и вызывается, если invoke required является истинным?
r u все еще получает ошибки? – TalentTuner