передача COM-объектов через Remoting
От: Koloto  
Дата: 22.10.04 09:34
Оценка:
Столкнулся со проблемой передачи СОМ-объектов (в частности Excel) через Remoting. Есть клиент и сервер, оба на C#, код полностью управляемый. Добавляю к проектам сервера и клиента ссылку на СОМ-компонент Microsoft Excel 10.0 Object Library. Создаю на клиенте экземпляр Excel.ApplicationClass и пытаюсь передать его (как интерфейс Excel.Application) на сервер. При этом клиент наглухо зависает. Например, код простейшего метода сервера:
public void FillXL(Excel.Application xl)
{
    xl.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
}

код вызова на клиенте:
    Excel.Application xl = new Excel.ApplicationClass();
    xl.Visible = true;
    Server.FillXL(xl);   //Server - это экземпляр Remoting сервера

Показывается новое пустое приложение экселя, затем при вызове метода FillXL клиент виснет намертво, ни на что не отвечая. Даже если клиент и сервер на одной машине. Пробовал передавать параметр как Excel.ApplicationClass и как object с последующим приведением типов — та же ботва. Если Server сделать локальным объектом, естественно, все работает. В чем тут заморочка?
Раньше (на VB6 и VC6) подобную штуку можно было реализовать через OLE или DCOM. Можно ли такое в .NET? Можно ли передавать COM-интерфейсы через Remoting вообще? Может, это какая-нибудь фича Interopa вообще? С Interop только начал работать, так что не пинайте очень сильно, если какую глупость сморозил Буду рад любой помощи.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.