Конференция "Corba" » Best practice в создании свойств-списков объектов в COM в многопо
 
  • Slym © (07.12.07 12:06) [0]
    Какой Best practice в создании свойств-списков объектов в COM в многопоточных приложениях?
    Имеем многопоточное приложение и интерфейсы:

     ////Член списка ciInternal/tmSingle
     ITTestItem = interface(IDispatch)
       ['{350F0451-E8B4-42AE-A817-F83D112AD269}']
       function Get_Data: Integer; safecall;
       property Data: Integer read Get_Data;
     end;
     ITTestItemDisp = dispinterface
       ['{350F0451-E8B4-42AE-A817-F83D112AD269}']
       property Data: Integer readonly dispid 201;
     end;

     ////Сам список в нем же будет реализован и Enum   ciInternal/tmSingle или ciInternal/tmApartment ?
     ITTest = interface(IDispatch)
       ['{9C3922E1-A24C-417D-B052-EE2940AFD628}']
       function Get_Items(Index: Integer): ITTestItem; safecall;
       function Get_Count: Integer; safecall;
       function Add: ITTestItem; safecall;
       function _NewEnum: IUnknown; safecall;
       property Items[Index: Integer]: ITTestItem read Get_Items;
       property Count: Integer read Get_Count;
     end;
     ITTestDisp = dispinterface
       ['{9C3922E1-A24C-417D-B052-EE2940AFD628}']
       property Items[Index: Integer]: ITTestItem readonly dispid 201;
       property Count: Integer readonly dispid 202;
       function Add: ITTestItem; dispid 203;
       function _NewEnum: IUnknown; dispid -4;
     end;

     ////Объект-владелец списка ciSingleInstance/tmApartment
     ITApp = interface(IDispatch)
       ['{426980CD-6720-4337-BE7A-82DA53343CBE}']
       function Get_Test: ITTest; safecall;
       property Test: ITTest read Get_Test;//То самое свойство
     end;



    1. Как реализовать возврат списка?
    1.1. Создавать новую копию списка каждому запросившему, но при этом будут недоступны изменения в списке без запроса новой копии
    1.2. Выдавать ссылку на имеющийся общий список, тогда как синхронизировать доступ к нему или оставить это для COM и играться настройками поточности апартмента (хотя в это с трудом верится)
    2. О потоко безопасности члена списка позаботится COM есля я выставлю ТредМодельSingle?
 
Конференция "Corba" » Best practice в создании свойств-списков объектов в COM в многопо
Есть новые Нет новых   [120347   +16][b:0][p:0.001]