Есть некое пользовательское API. Это API представляет собой набор COM дуальных интерфейсов (ApiLib.dll). В системе зарегестрирована.
Добавляю в проект через Reference. Visual Studio 2005
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 все работало без моего вмешательства, а тут такие задвиги?