Корректное использование COM
От: Angler Россия  
Дата: 28.09.10 12:59
Оценка:
В продожение к http://rsdn.ru/forum/dotnet/3975371.1.aspx
Автор: Angler
Дата: 28.09.10
, хотелось бы узнать, возможно я пытаюсь делать что-то c СОМ не так?
Тоесть следующий кусок:


IServer server = CreateServerObject(...);
foreach(int i = 0; i < server.Documents.Length; ++i)
{
   server.Documents[i].foo();
}



обязан быть переписан в следующую колбасину???:


IServer server = CreateServerObject(...);
try
{
  IDocumentList docList = server.Documents;
  try
  {
     foreach(int i = 0; i < server.Documents.Length; ++i)
     {
        IDocument doc = server.Documents[i];
        try
        {
           doc.foo();
        }
        finally
        {
           Marshal.ReleaseComObject(doc);
        } 
     }
  }
  finally
  {
     Marshal.ReleaseComObject(docList);
  }
   
}
finally
{
   Marshal.ReleaseComObject(server);
}



???
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.