Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2010, 23:12   #1
boris-blade
Пользователь
 
Регистрация: 18.12.2009
Сообщений: 53
По умолчанию Работа с файлом из нескольких потоков

Есть у меня статичный класс, в кот. указаны файлы рисунков.
Код:
             ActionBitmap[1]=new Bitmap(@"D:\Documents and Settings\Борис\Мои документы\Мои рисунки\Resource\Check.bmp");
В проге несколько потоков, дергающих одни и те же рисунки. При работе вылетает с такой ошибкой:
System.InvalidOperationException не обработано
Message="В данный момент объект используется другим процессом."
Source="System.Drawing"
StackTrace:
в System.Drawing.Image.get_Width()
в System.Drawing.Bitmap.GetPixel(Int3 2 x, Int32 y)
в pdebug1.PictureProceeding.NumberOfE ntrances(Bitmap SourceBitmap, Bitmap EntranceBitmap, ArrayList& EntrancePoint) в D:\Documents and Settings\Борис\Мои документы\Visual Studio 2008\Projects\pdebug1\pdebug1\Pictu reProceeding.cs:строка 668
в pdebug1.PictureProceeding.NumberOfE ntrances(Bitmap SourceBitmap, Bitmap EntranceBitmap) в D:\Documents and Settings\Борис\Мои документы\Visual Studio 2008\Projects\pdebug1\pdebug1\Pictu reProceeding.cs:строка 796
в pdebug1.PictureProceeding.Recognize dPlayerAction(Int32 PlayerNumber, Point TopLeftCornerAtScreenShot) в D:\Documents and Settings\Борис\Мои документы\Visual Studio 2008\Projects\pdebug1\pdebug1\Pictu reProceeding.cs:строка 856
в pdebug1.Table.RecognizePosting() в D:\Documents and Settings\Борис\Мои документы\Visual Studio 2008\Projects\pdebug1\pdebug1\Table .cs:строка 435
в System.Threading.ThreadHelper.Threa dStart_Context(Object state)
в System.Threading.ExecutionContext.R un(ExecutionContext executionContext, ContextCallback callback, Object state)
в System.Threading.ThreadHelper.Threa dStart()
InnerException:
на коде:
Код:
                    if (SourceBitmap.GetPixel(i, j) ==
                        EntranceBitmap.GetPixel(0, 0))
этот кусок кода по сравнению цвета пиксела на скриншоте и определенного пиксела из картинки со статичного класса.
Вопрос:
Если в рамках одного потока был выполнен код:
Код:
             ActionBitmap[1]=new Bitmap(@"D:\Documents and Settings\Борис\Мои документы\Мои рисунки\Resource\Check.bmp");
то в рамках другого с этой картинкой уже нельзя работать?
boris-blade вне форума Ответить с цитированием
Старый 01.04.2010, 23:27   #2
Cpluser
Форумчанин
 
Аватар для Cpluser
 
Регистрация: 16.02.2009
Сообщений: 555
По умолчанию

Наверно нельзя возми создай такой же файл для второго потока.
Cpluser вне форума Ответить с цитированием
Старый 02.04.2010, 17:21   #3
opiume
 
Регистрация: 16.03.2010
Сообщений: 8
По умолчанию

попробуй использовать мьютексы. Если это тебя устроит, то проблема должна исчезнуть.
http://zavyalov.blogspot.com/
opiume вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлом orkus Общие вопросы Delphi 4 02.04.2010 04:51
работа с файлом Андрей.12 Помощь студентам 1 15.02.2010 01:35
Передача параметров обьектам из разных потоков(работа с Thread) B@ND!T Общие вопросы .NET 2 27.01.2010 23:37
работа с файлом lg12 Помощь студентам 7 24.08.2009 08:33