DCOM и VS2005
От: panterus  
Дата: 22.09.06 13:27
Оценка:
Добрый день.

Есть некое пользовательское API. Это API представляет собой набор COM дуальных интерфейсов (ApiLib.dll). В системе зарегестрирована.
Добавляю в проект через Reference. Visual Studio 2005

(код облегчен, убраны try- catch ,прочие проверки)

using ApiLib;
int count = 0;

public void thread_Sec()
{
this.messageThread_Sec = new System.Threading.Thread(new System.Threading.ThreadStart(potok_Sec));
this.messageThread_Sec.Name = "Thread_Sec";
this.messageThread_Sec.Start();
}

public delegate void securities_delegate();

public void potok_Sec()
{
if (this.InvokeRequired)
{
securities_delegate d = new securities_delegate(potok_Sec);
this.Invoke(d);

}
else
{
this.Table_SEC = new ApiLib.TableClass();
this.Table_SEC.Open(this.connection1, "SEC");
this.Table_SEC.Data += new ApiLib._ITableEvents_DataEventHandler(this.Data);
this.Table_SEC.Get(); //Отправка запроса данных по таблице
}
}


public void Data(object pDataSet, string Table)
{
DataSet = (ApiLib.DataSet)pDataSet;
if (Table == "SEC")
{
for(int i = 0; i < DataSet.Count ; ++i)
{
--здесь идет закидывание в SQL принятых данных.--
count = count +1;
textBox1.Text = count.ToString();

}

}
}

Данных по Table_SEC.Get() много, порядка 100.000 записей.
Во время срабатывания Data форма умирает. После прокачки данных, форма оживает. С Visual Studio .Net (2003) такого не наблюдалось, код практически идентичен.
Понятно, что Data выполняется в потоке формы, чем и тормозит. Связано ли это с длл? Может нужно было ручками, то есть самому написать код подключения длл ? Какие варианты решения проблемы можете предложить? И почему на ВС 2003 все работало без моего вмешательства, а тут такие задвиги?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.