Страница 1 из 2

Трабл с версией от 14.05.07

Добавлено: 14 май 2007, 17:53
Валерий В. Шинкевич
Необработанное исключение: System.InvalidOperationException: Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'sepZoom2' не из того потока, в котором он был создан.

Нопонятно при каких условиях возникает глюк - вообщем пока скажу только это:

Код: Выделить всё

2007:05:14, 22:36: StiReport: Starting report designer
'myapp.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\Stimulsoft.Editor\2007.2.0.0__ebe6666cba19647a\Stimulsoft.Editor.dll', No symbols loaded.
'myapp.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\System.Transactions.resources\2.0.0.0_ru_b77a5c561934e089\System.Transactions.resources.dll', No symbols loaded.
System.Transactions Critical: 0 : http://msdn.microsoft.com/TraceCodes/System/ActivityTracing/2004/07/Reliability/Exception/UnhandledНеобработанное исключениеmyapp.exeSystem.InvalidOperationException, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'sepZoom2' не из того потока, в котором он был создан.
   в System.Windows.Forms.Control.get_Handle()
   в System.Windows.Forms.Control.SetVisibleCore(Boolean value)
   в System.Windows.Forms.Control.set_Visible(Boolean value)
   в Stimulsoft.Report.Render.StiPreviewControl.LoadConfig()
   в Stimulsoft.Report.Render.StiPreviewControl.set_Report(StiReport value)
   в Stimulsoft.Report.Render.StiPreviewControl.Dispose(Boolean disposing)
   в System.ComponentModel.Component.Finalize()System.InvalidOperationException: Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'sepZoom2' не из того потока, в котором он был создан.
   в System.Windows.Forms.Control.get_Handle()
   в System.Windows.Forms.Control.SetVisibleCore(Boolean value)
   в System.Windows.Forms.Control.set_Visible(Boolean value)
   в Stimulsoft.Report.Render.StiPreviewControl.LoadConfig()
   в Stimulsoft.Report.Render.StiPreviewControl.set_Report(StiReport value)
   в Stimulsoft.Report.Render.StiPreviewControl.Dispose(Boolean disposing)
   в System.ComponentModel.Component.Finalize()

Необработанное исключение: System.InvalidOperationException: Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'sepZoom2' не из того потока, в котором он был создан.
   в System.Windows.Forms.Control.get_Handle()
   в System.Windows.Forms.Control.SetVisibleCore(Boolean value)
   в System.Windows.Forms.Control.set_Visible(Boolean value)
   в Stimulsoft.Report.Render.StiPreviewControl.LoadConfig()
   в Stimulsoft.Report.Render.StiPreviewControl.set_Report(StiReport value)
   в Stimulsoft.Report.Render.StiPreviewControl.Dispose(Boolean disposing)
   в System.ComponentModel.Component.Finalize()
The program '[3108] myapp.exe: Managed' has exited with code -532459699 (0xe0434f4d).


и еще

Код: Выделить всё

Report.Dictionary.Variables.Add("beginDate",beginDate.Date);
теперь работает, а

Код: Выделить всё

 Report.Dictionary.Variables.Add("endDate", typeof (DateTime));
 Report["endDate"] = endDate.Date;

выдает A first chance exception of type 'System.FieldAccessException' occurred in Stimulsoft.Report.dll


и еще заметил - теперь регистрируются пустые списки Business Objects, но только... как если бы StiOptions.Dictionary.Enumerables.MaxLevel = 1

т.е. если раньше было

Код: Выделить всё

Orders
Orders_Owner
Orders_Client
Orders_Firm

то теперь только
и при переделке с Orders_Owner на Orders.Owner возникает следующее исключение (что понятно когда видишь, что Orders.Owner в словаре почему-то отсутствует, хотя Orders.Client и прочие есть....):

Код: Выделить всё

2007:05:14, 23:02: StiReport: Loading report
2007:05:14, 23:02: StiReport: Compiling report
2007:05:14, 23:02: StiReport: e:\Temp\j2imj9xx.0.cs(189,39) : error CS0117: 'Reports.Report.polistDataSource' не содержит определение для 'Owner'
2007:05:14, 23:02: StiReport: e:\Temp\j2imj9xx.0.cs(276,62) : error CS0117: 'Reports.Report.polistDataSource' не содержит определение для 'Owner'
2007:05:14, 23:02: StiReport: e:\Temp\j2imj9xx.0.cs(281,39) : error CS0117: 'Reports.Report.polistDataSource' не содержит определение для 'Owner'
2007:05:14, 23:02: StiReport: Compiling report...ERROR
2007:05:14, 23:02: StiReport: Method : [Compile] : e:\Temp\j2imj9xx.0.cs(189,39) : error CS0117: 'Reports.Report.polistDataSource' не содержит определение для 'Owner'e:\Temp\j2imj9xx.0.cs(276,62) : error CS0117: 'Reports.Report.polistDataSource' не содержит определение для 'Owner'e:\Temp\j2imj9xx.0.cs(281,39) : error CS0117: 'Reports.Report.polistDataSource' не содержит определение для 'Owner'
====================================================
   в Stimulsoft.Report.StiReport.Compile(String path, Stream stream, StiOutputType outputType, Boolean autoCreate)
====================================================
A first chance exception of type 'System.Exception' occurred in Stimulsoft.Report.dll
System.Exception: e:\Temp\j2imj9xx.0.cs(189,39) : error CS0117: 'Reports.Report.polistDataSource' не содержит определение для 'Owner'
e:\Temp\j2imj9xx.0.cs(276,62) : error CS0117: 'Reports.Report.polistDataSource' не содержит определение для 'Owner'e:\Temp\j2imj9xx.0.cs(281,39) : error CS0117: 'Reports.Report.polistDataSource' не содержит определение для 'Owner'
   в Stimulsoft.Report.StiReport.Compile(String path, Stream stream, StiOutputType outputType, Boolean autoCreate)
   в Stimulsoft.Report.StiReport.Compile(String path, StiOutputType outputType, Boolean autoCreate)
   в Stimulsoft.Report.StiReport.Compile(String path, StiOutputType outputType)
   в Stimulsoft.Report.StiReport.Compile(StiOutputType outputType)
   в Stimulsoft.Report.StiReport.Compile()
   в BusinessLib.Reports.Report.PrepareData(Boolean forDesign) в D:\NewProject\myapp\BusinessLib\Reports\Report.cs:строка 45

Трабл с версией от 14.05.07

Добавлено: 14 май 2007, 21:06
Vital
Вы используете .Net 2.0 ?

Спасибо.

Трабл с версией от 14.05.07

Добавлено: 15 май 2007, 04:07
Валерий В. Шинкевич
Vital писал(а):Вы используете .Net 2.0 ?

Спасибо.
Да, 2.0... установлены Security Update KB922770 и Hotfix KB20060522


теперь по поводу исчезновения Owner в Orders.
сначала следует сказать, что Orders - набор строк документа, а Owner - сам документ...
я передаю в отчет коллекцию строк документов за какой-то период, что проще, для работы с ними в очете нежели же передавать документы и потом выбирать нужные строки.

класс объявлен как

Код: Выделить всё

public class Orders_Lines 
{

    [System.ComponentModel.BrowsableAttribute(false)]
    public int ID { get { ;}   set {;} }

    [System.ComponentModel.BrowsableAttribute(false)]
    public Orders Owner {  get {;}   set {; }  }

    [System.ComponentModel.DisplayNameAttribute("Строка")]
    public int Line {
      get {;}
      set {;}
    }

    ........

    }
  
[BrowsableAttribute(false)] применяется для того, чтобы облегчить жизнь при Binding`e в DataGridView и прочим контролам.

Но теперь применение этого атрибута отрицательно сказывается в StiReport.

другими словами - если я поставлю [BrowsableAttribute(true)] или вообще уберу его - то .... упс... Owner появляется в словаре.

Но сами понимаете - он теперь появляется везде, а мне этого очень не хочется...

Трабл с версией от 14.05.07

Добавлено: 15 май 2007, 11:05
Vital
Есть такое статическое свойство StiBusinessObjectToDataSet.PropertiesProcessingType. Присвойте туда значение StiPropertiesProcessingType.All.

Спасибо.

Трабл с версией от 14.05.07

Добавлено: 15 май 2007, 13:23
Edward
wash_ai писал(а):

Код: Выделить всё

Report.Dictionary.Variables.Add("beginDate",beginDate.Date);
теперь работает
Этот код добавляет переменную в словарь шаблона отчета и присваивает ей значение.
wash_ai писал(а):

Код: Выделить всё

 Report.Dictionary.Variables.Add("endDate", typeof (DateTime));
 Report["endDate"] = endDate.Date;
выдает A first chance exception of type 'System.FieldAccessException' occurred in Stimulsoft.Report.dll
Строка

Код: Выделить всё

Report["endDate"] = endDate.Date;
записывает значение в переменную только в скомпилированном отчете.
И если отчет не был скомпилирован, то и происходит исключение.
В билде от 15 мая для данной команды будет проводится автоматическая проверка, присутсвует ли скомпилированная версия отчета. Если да, то значение будет передано в скомпилированный отчет, если нет, то в шаблон отчета. Хорошая идея, спасибо.

Спасибо.

Трабл с версией от 14.05.07

Добавлено: 15 май 2007, 15:51
Валерий В. Шинкевич
Спасибо. со всем этим всё ясно... разобрался ...

Но осталось только одно -
ystem.InvalidOperationException: Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'sepZoom2' не из того потока, в котором он был создан.
выскакивает с завидным постоянством. в основном при переключении с закладки Preview на Page / Code или при закрытии дизайнера

Трабл с версией от 14.05.07

Добавлено: 15 май 2007, 17:42
Валерий В. Шинкевич
wash_ai писал(а):Спасибо. со всем этим всё ясно... разобрался ...

Но осталось только одно -
ystem.InvalidOperationException: Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'sepZoom2' не из того потока, в котором он был создан.
выскакивает с завидным постоянством. в основном при переключении с закладки Preview на Page / Code или при закрытии дизайнера
после долгих проб... и ошибок пришел к тому, что снёс к чёртовой бабушке каталог "C:\Documents and Settings\User\Local Settings\Application Data\Stimulsoft"

и всё заработало....

Трабл с версией от 14.05.07

Добавлено: 15 май 2007, 18:49
Vital
Интересная проблема если учитывать, что весь код работает всегда в основном потоке.

Спасибо.

Трабл с версией от 14.05.07

Добавлено: 16 май 2007, 12:50
Валерий В. Шинкевич
Vital писал(а):Интересная проблема если учитывать, что весь код работает всегда в основном потоке.

Спасибо.
да, я даже гипертрейдинг отключал .....

я заметил, что периодически обновляется тулбар у Preview Controla при этом как-то вправо-влево скачут Zoom контролы - особенно заметно на кнопке с плюсом ....

Трабл с версией от 14.05.07

Добавлено: 16 май 2007, 16:12
Vital
Проблема известная, но пока поправить не можем.