Здравствуйте, _FRED_, Вы писали: _FR>А показать "стектрейс" здесь очень сложно
Не сложно.
[InvalidOperationException]: The object is currently in use elsewhere.
at System.Drawing.Image.get_Width()
at System.Drawing.Image.get_Size()
at DevExpress.XtraBars.ViewInfo.BarLinkViewInfo.get_GlyphSize()
at DevExpress.XtraBars.ViewInfo.BarLinkViewInfo.CalcLinkHorizontalCalptionGlyphWidth(Graphics g, Object sourceObject)
at DevExpress.XtraBars.ViewInfo.BarLinkViewInfo.CalcLinkHorizontalSize(Graphics g, Object sourceObject)
at DevExpress.XtraBars.ViewInfo.BarCustomContainerLinkViewInfo.CalcLinkHorizontalSize(Graphics g, Object sourceObject)
at DevExpress.XtraBars.ViewInfo.BarLinkViewInfo.CalcLinkSize(Graphics g, Object sourceObject)
at DevExpress.XtraBars.BarItemLink.CalcLinkSize(Graphics g, Object sourceObject)
at DevExpress.XtraBars.ViewInfo.BarControlViewInfo.CalcLinkSize(BarItemLink link, Graphics g, Object sourceObject)
at DevExpress.XtraBars.ViewInfo.BarControlViewInfo.PreCalcMultiLineSize(Graphics g, Object sourceObject, Int32 AMaxBarWidth, Int32& ARestWidth)
at DevExpress.XtraBars.ViewInfo.DockedBarControlViewInfo.PreCalcMultiLineSize(Graphics g, Object sourceObject, Int32 AMaxBarWidth, Int32& ARestWidth)
at DevExpress.XtraBars.ViewInfo.BarControlViewInfo.PreCalcBarDrawInfo(Graphics g, Object sourceObject, Int32 width)
at DevExpress.XtraBars.ViewInfo.BarControlViewInfo.CalcBarSize(Graphics g, Object sourceObject, Int32 width, Int32 maxHeight)
at DevExpress.XtraBars.Controls.CustomControl.CalcSize(Int32 width, Int32 maxHeight)
at DevExpress.XtraBars.Controls.CustomControl.CalcSize(Int32 width)
at DevExpress.XtraBars.BarDockControl.CalcBarMaxOffsets(DockRow row, Int32 restWidth)
at DevExpress.XtraBars.BarDockControl.MakeLayout(DockRow row, Point& lastLocation, Int32 rowIndent, Int32 rowObjectIndent, Int32& totalHeight, Int32& totalShrinkableHeight)
at DevExpress.XtraBars.BarDockControl.DoLayout()
at DevExpress.XtraBars.BarDockControl.CheckSize()
at DevExpress.XtraBars.BarDockControl.BarDockChanged()
at DevExpress.XtraBars.BarDockControl.EndUpdate()
at DevExpress.XtraBars.BarManager.EndUpdate()
at DevExpress.XtraBars.Utils.BarMdiHelper.DoCheckMdi(Form activeForm, Boolean force)
at DevExpress.XtraBars.BarManager.OnFormMdiChildActivate(Object sender, EventArgs e)
at System.Windows.Forms.Form.OnMdiChildActivate(EventArgs e)
at System.Windows.Forms.Form.ActivateMdiChild(Form form)
at System.Windows.Forms.Form.WmMdiActivate(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Re[3]: XP vs S2003: The object is currently in use elsewhere
M>[InvalidOperationException]: The object is currently in use elsewhere.
M>at System.Drawing.Image.get_Width()
...
M>
В этот момент картинка заблокированна другим потоком (напр. рисуется с пом DrawImage).
imho, решений без "лечений потоков" не существует, в текущей реализации GDI+ нельзя работать с картинкой (даже получать о ней инфу, что канешна странно) в разных потоках без синхронизации, и если на данный момент у вас не работает только на Win2003, то в любой момент ошибка может проявиться и на WinXP.
Re[4]: XP vs S2003: The object is currently in use elsewhere
Здравствуйте, _FRED_, Вы писали:
_FR>А вот то, что рисование идёт из разных потококов, уже криминал. Как такое возможно???
Какой-нить поток вызвает Applicatio.DoEvents, или диалог открыт в другом потоке, а картинка используется одна и та же...
AZ>>в текущей реализации GDI+ нельзя работать с картинкой (даже получать о ней инфу, что канешна странно) в разных потоках без синхронизации, _FR>Это документировано где-то?
Не видел, определено опытным путем в процессе ловли бага. Воспроизвести достаточно легко: в основном (GUI) потоке рисуйте картинку, а в другом периодически считывайте размеры этой картинки..
Re[6]: XP vs S2003: The object is currently in use elsewhere
Здравствуйте, AlexZu, Вы писали:
_FR>>А вот то, что рисование идёт из разных потококов, уже криминал. Как такое возможно??? AZ>Какой-нить поток вызвает Applicatio.DoEvents, или диалог открыт в другом потоке, а картинка используется одна и та же...
Ну так и не удивительно, что падает
Help will always be given at Hogwarts to those who ask for it.
Re[4]: XP vs S2003: The object is currently in use elsewhere