Re: DCOM и VS2005
От: panterus  
Дата: 25.09.06 11:01
Оценка:
дополнение (ApiLib использует апартмент STA)
провел тест.
В VS .NET
[MTAThread]
static void Main()
{
//добавил строчки

Thread.CurrentThread.Name = "WinForm`s thread";
MessageBox.Show(Thread.CurrentThread.Name);

Application.Run(new Form1());
}

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

}
}
При загрузке формы MessageBox выдает "WinForm`s thread", при срабатывании Data MessageBox выдает "" , то есть налицо работа с длл в потоке, отличным от главного.

В VS 2005:
[STAThread]
static void Main()
{
Thread.CurrentThread.Name = "WinForm`s thread";
MessageBox.Show(Thread.CurrentThread.Name);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}

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

}
}
При загрузке формы MessageBox выдает "WinForm`s thread", при срабатывании Data MessageBox выдает "WinForm`s thread".
Пробовал менять с STA на MTA — есс-но, длл не заработала (события не срабатывали и не шли данные)
Вопрос: как сделать, чтобы события длл обрабатывались не в главном потоке?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.